我的索引包含以下数据:
doc.add(new StringField("domain", "examplehouse.com", Field.Store.YES)
doc.add(new StringField("domain", "exampletree.com", Field.Store.YES)
doc.add(new StringField("domain", "exampleapple.com", Field.Store.YES)
现在我正在尝试使用“example”一词返回所有域名:
bq = new BooleanQuery().Builder.add(new TermQuery(new Term("domain", "example")))
indexSearcher.search(bq, 100)
我打印时的查询看起来像:
+domain:example
这是正确的查询类型还是完全匹配?
答案 0 :(得分:1)
TermQueries始终是完全匹配。在您的情况下,像PrefixQuery这样的基于通配符的查询会更有意义:https://lucene.apache.org/core/6_6_0/core/org/apache/lucene/search/PrefixQuery.html
有多种通配符类型,您应该注意理解这一点:
旧的但仍然有效的lucene docs链接显示查询语法: https://lucene.apache.org/core/2_9_4/queryparsersyntax.html