def Qsearch(self,query): words = seg.segment(query.strip()) #words = self.segmentor.segment(query.strip()) #print ' '.join(words) vm_env = lucene.getVMEnv() vm_env.attachCurrentThread() result = QueryParser(Version.LUCENE_CURRENT, "contents",self.analyzer) result.setPhraseSlop(0) # "\""+' '.join(words)+"\"~0" means words should be continuous query = result.parse("\""+' '.join(words)+"\"~0") totalHits = self.searcher.search(query, 50) #print "%s total matching documents." % totalHits.totalHits #return totalHits.totalHits for hit in totalHits.scoreDocs: #print"Hit Score: ",hit.score, "Hit Doc:",hit.doc, "HitString:",hit.toString() doc= self.searcher.doc(hit.doc) #print doc.get("name").encode("utf-8") #print "----------------------------------------" t = Term('contents',' '.join(words)) #termDocs = ireader.termDocs(t) #for tt in termDocs: # print ireader.document(termDocs.docs).getFeildable('neme'),termDocs.freq() #print self.reader.totalTermFreq(t) return self.reader.totalTermFreq(t)
def getQueryParser(self): analyzers = self.getSearchingAnalyzers() map = HashMap() map.put('name', analyzers['name']) map.put('parent', analyzers['parent']) map.put('content', analyzers['default']) map.put('id', analyzers['id']) analyzerWrapper = PerFieldAnalyzerWrapper(analyzers['default'], map) queryParser = QueryParser(Version.LUCENE_CURRENT, 'content', analyzerWrapper) queryParser.setAutoGeneratePhraseQueries(PHRASE_QUERY_BY_DEFAULT) queryParser.setPhraseSlop(PHRASE_SLOP) queryParser.setFuzzyMinSim(FUZZY_MIN_SIM) queryParser.setDefaultOperator(DEFAULT_OPERATOR) return queryParser