def searchGiustizia(self,startPagination,recPerPage):
indexPath = File(self.fileLucene).toPath()
directory = FSDirectory.open(indexPath)
searcher = IndexSearcher(DirectoryReader.open(directory))
paQuery5 = TermQuery(Term("parte","TELESI RICCARDO"))
analyzer = StandardAnalyzer()
print ("\n------------------------------------------------------")
start = datetime.now()
collector = TotalHitCountCollector()
searcher.search(paQuery5, collector)
print("found: ",collector.getTotalHits())
scoreCollector = TopScoreDocCollector.create(collector.getTotalHits(), 0)
searcher.search(paQuery5, scoreCollector)
scoreDocs = scoreCollector.topDocs(startPagination, recPerPage).scoreDocs
duration = datetime.now() - start
print("paginata ",str(duration))
for scoreDoc in scoreDocs:
doc = searcher.doc(scoreDoc.doc)
print (doc.get("cf_giudice")," ",
doc.get("codiceoggetto")," ",
doc.get("parte")," ",
doc.get("distretto"))
print ("\n------------------------------------------------------")
The function try to search "TELESI RICCARDO" in lucene index. This search function return zeros results. Why? I have TELESI RICCARDO as parte field indexed in lucene. If I try the same query using QueryParser it work like this:
def searchGiustizia(self,startPagination,recPerPage):
indexPath = File(self.fileLucene).toPath()
directory = FSDirectory.open(indexPath)
searcher = IndexSearcher(DirectoryReader.open(directory))
analyzer = StandardAnalyzer()
queryParser = QueryParser("parte", analyzer)
queryParser.setDefaultOperator(QueryParser.Operator.AND);
paQuery4 = queryParser.parse("TELESI RICCARDO");
print ("\n------------------------------------------------------")
start = datetime.now()
collector = TotalHitCountCollector()
searcher.search(paQuery4, collector)
print("trovati: ",collector.getTotalHits())
scoreCollector = TopScoreDocCollector.create(collector.getTotalHits(), 0)
searcher.search(paQuery4, scoreCollector)
scoreDocs = scoreCollector.topDocs(startPagination, recPerPage).scoreDocs
duration = datetime.now() - start
print("paginata ",str(duration))
for scoreDoc in scoreDocs:
doc = searcher.doc(scoreDoc.doc)
print (doc.get("cf_giudice")," ",
doc.get("codiceoggetto")," ",
doc.get("parte")," ",
doc.get("distretto"))
print ("\n------------------------------------------------------")
This QueryParser work perfectly but TermQuery doesn't.