gpt4 book ai didi

java - lucene BooleanQuery.Builder 构建不起作用

转载 作者:行者123 更新时间:2023-11-30 06:54:57 25 4
gpt4 key购买 nike

大家好,我有一个问题:)

我像这样创建一个 BooleanQuery :

BooleanQuery.Builder qry = new BooleanQuery.Builder();
qry.add(new TermQuery(new Term("Name", "Anna")), BooleanClause.Occur.SHOULD);

如果我现在进行这样的搜索:

TopDocs docs = searcher.search(qry.build(), hitsPerPage);

结果为零?但是如果我使用这段代码:

TopDocs docs = searcher.search(parser.parse(qry.build().toString()),    hitsPerPage);

然后我得到正确的结果?你能解释一下为什么我必须再次解析它吗?

我使用的是 5.5.0 版本,Name 是一个 TextField

最佳答案

TextField 通过分析器运行您的数据,可能会生成术语 "anna"(小写)。 TermQuery 不通过分析器运行任何内容,因此它搜索 "Anna"(大写),但不匹配。使用小写的术语创建 TermQuery,您应该会看到结果:new TermQuery(new Term("Name", "anna"))BooleanQuery 与此无关,事实上,此特定查询会将自身重写为基础 TermQuery,因为这是唯一的子查询。解析器获取字符串 "Name:Anna"(由 TermQuery 生成),通过分析器运行它并为您提供一个 "Name:anna" TermQuery,这就是如果您通过解析器运行查询它会起作用的原因 - 它涉及必要的分析步骤。

关于java - lucene BooleanQuery.Builder 构建不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35865323/

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