zhaih commented on code in PR #12208:
URL: https://github.com/apache/lucene/pull/12208#discussion_r1158817727
##########
lucene/sandbox/src/test/org/apache/lucene/sandbox/search/TestTermAutomatonQuery.java:
##########
@@ -842,6 +844,95 @@ public void testRewriteSimplePhrase() throws Exception {
IOUtils.close(w, r, dir);
}
+ public void testExplainNonMatchingDocument() throws Exception {
+ TermAutomatonQuery q = new TermAutomatonQuery("field");
+ int initState = q.createState();
+ int s1 = q.createState();
+ int s2 = q.createState();
+ q.addTransition(initState, s1, "xml");
+ q.addTransition(s1, s2, "json");
+ q.setAccept(s2, true);
+ q.finish();
+
+ Directory dir = newDirectory();
+ RandomIndexWriter w = new RandomIndexWriter(random(), dir);
+ Document doc = new Document();
+ doc.add(newTextField("field", "protobuf", Field.Store.NO));
+ w.addDocument(doc);
+
+ IndexReader r = w.getReader();
+ IndexSearcher searcher = newSearcher(r);
+ Query rewrite = q.rewrite(searcher);
+ assertTrue(rewrite instanceof PhraseQuery);
Review Comment:
> TermAutomatonQuery's explain will rewrite to a variety of other queries
To be more precise, `IndexSearcher` will try to rewrite the query first and
then if the rewrite still returns the `TermAutomatonQuery`, then it will create
`TermAutomatonWeight` and call the explain you implemented.
So if we want to test the specific implementation (which is what I think we
should do here), we need to make sure we created a query that does not rewrite
to something else.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]