我在使用短语查询搜索 lucene 标记化索引时遇到了一个奇怪的问题。
我通过以下方式创建索引
Document doc = new Document();
FieldType ft = new FieldType(StringField.TYPE_STORED);
ft.setTokenized(true);
Field field1 = new Field("key", "T-Test 1", ft);
doc.add(field1)
Field field2 = new Field("key", "T-Test 2", ft);
doc.add(field2)
Field field3 = new Field("key", "T-Test 3", ft);
doc.add(field3)
Field field4 = new Field("key", "T-Test", ft);
doc.add(field4)
我使用 WhitespaceAnalyzer 对值进行标记。如果我现在想搜索字符串“T-Test”,我会得到值 T-Test 1,T-Test 2, T-Test 3, T-Test
我通过以下方式创建查询。
PhraseQuery query = new PhraseQuery();
query.add(new Term("key","T-Test"));
query.setSlop(0);
BooleanQuery mainQuery = new BooleanQuery();
mainQuery.add(query, Occur.MUST);
我也尝试使用具有相同效果的 ComplexPhraseQueryParser。我只是得到所有的 T 检验值。但我只想要 T 测试而不是“T 测试 1、T 测试 2 和 T 测试 3”有人可以帮帮我吗?我快要绝望了 谢谢