Lucene query: TermQuery doesn't work but QueryParser works

63 views Asked by At
    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.

0

There are 0 answers