gpt4 book ai didi

java - 如何自动将所有 Lucene TermQuery 对象转换为 PrefixQuery?

转载 作者:行者123 更新时间:2023-12-01 18:17:55 25 4
gpt4 key购买 nike

我使用 QueryParserStandardAnalyzer 来解析查询字符串。通过此设置,如果我搜索“key Short”,它将与文本“keyboard快捷方式”不匹配。

我认为这是因为 queryString "key Short" 被解析为 BooleanQuery(TermQuery("key"), TermQuery("short"))。如果我希望它匹配“键盘快捷键”,我必须搜索“key*short*”。我希望 QueryParser 自动为我执行此操作,即在给出查询字符串 "key Short"时生成: BooleanQuery(PrefixQuery("key"), PrefixQuery("short"))

这是正确的方法吗?如果是这样,我该怎么做?

最佳答案

我从未找到“正确”的解决方案,因此我实现了一种黑客攻击,将通配符附加到原始查询中的各个单词,然后将其提供给分析器:

private static final Pattern QUERY_WORD_PATTERN = Pattern.compile("(?<= |^)(?!AND|OR)(\\w+)(?= |$)");

...

String processedQuery = String.format("%s OR %s",
QUERY_WORD_PATTERN.matcher(queryString).replaceAll("$1*"),
queryString);

Query query = new QueryParser(CONTENTS_FIELD, analyzer).parse(processedQuery);

关于java - 如何自动将所有 Lucene TermQuery 对象转换为 PrefixQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60331151/

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