def testSimilarity(self): writer = self.getWriter(analyzer=SimpleAnalyzer( Version.LUCENE_CURRENT), similarity=SimpleSimilarity()) d1 = Document() d1.add(Field("field", "a c", TextField.TYPE_STORED)) d2 = Document() d2.add(Field("field", "a c b", TextField.TYPE_STORED)) writer.addDocument(d1) writer.addDocument(d2) writer.commit() writer.close() searcher = self.getSearcher() searcher.setSimilarity(SimpleSimilarity()) a = Term("field", "a") b = Term("field", "b") c = Term("field", "c") class collector1(PythonSimpleCollector): def collect(_self, doc, score): self.assertEqual(1.0, score) def doSetNextReader(_self, context): pass def scoreMode(_self): return ScoreMode.COMPLETE searcher.search(TermQuery(b), collector1()) builder = BooleanQuery.Builder() builder.add(TermQuery(a), BooleanClause.Occur.SHOULD) builder.add(TermQuery(b), BooleanClause.Occur.SHOULD) bq = builder.build() class collector2(PythonSimpleCollector): def collect(_self, doc, score): self.assertEqual(doc + _self.base + 1, score) def doSetNextReader(_self, context): _self.base = context.docBase def scoreMode(_self): return ScoreMode.COMPLETE searcher.search(bq, collector2()) pq = PhraseQuery(a.field(), [a.bytes(), c.bytes()]) class collector3(PythonSimpleCollector): def collect(_self, doc, score): self.assertEqual(1.0, score) def doSetNextReader(_self, context): pass def scoreMode(_self): return ScoreMode.COMPLETE searcher.search(pq, collector3()) pq = PhraseQuery(2, a.field(), [a.bytes(), b.bytes()]) class collector4(PythonSimpleCollector): def collect(_self, doc, score): self.assertEqual(0.5, score) def doSetNextReader(_self, context): pass def scoreMode(_self): return ScoreMode.COMPLETE searcher.search(pq, collector4())
def suggest(self, term: index.Term) -> index.Term: """Return term with text replaced as necessary.""" field = term.field() words = self.searcher.suggest(field, term.text()) return index.Term(field, *words) if words else term