gpt4 book ai didi

java - 在 Lucene 中通过 ComplexPhraseQueryParser 使用多个字段

转载 作者:行者123 更新时间:2023-12-01 05:32:10 24 4
gpt4 key购买 nike

我目前正在使用 Lucene 的 MultiFieldQueryParser跨多个字段搜索相同的查询(即搜索“value”会生成field1:value field2:value field3:value)。但是,这使用标准 QueryParser not support wild card searches within phrases (即“测试短语*”)。所以我尝试使用 ComplexPhraseQueryPhrase来自 contrib/misc 包,它确实支持这一点。但是,这仅允许您一次搜索一个字段,就像 QueryParser 一样。

所以我一直在尝试将两者结合起来,制作一个 MultiFieldComplexPhraseQueryParser,但我还没有取得任何成功。有没有人做过类似的事情或者对如何做有任何建议?谢谢!

最佳答案

我实际上从 MultiFieldQueryParser (Lucene 3.0.3) 开始就取得了成功:

public class MultiFieldQueryParserTests {
@Test
public void testMultiFieldQueryParser() throws Exception {
MultiFieldQueryParser parser = new MultiFieldQueryParser(Version.LUCENE_30,
new String[] { "field1", "field2", "field3" },
new WhitespaceAnalyzer());
Query q = parser.parse("test phrase*");
System.out.println("query " + q);
q = parser.parse("\"test phrase*\"");
System.out.println("query " + q);
}
}

结果是:

query (field1:test field2:test field3:test) (field1:phrase* field2:phrase* field3:phrase*)
query field1:"test phrase*" field2:"test phrase*" field3:"test phrase*"

或者我在这里错过了什么?

关于java - 在 Lucene 中通过 ComplexPhraseQueryParser 使用多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8805829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com