如何解决Lucene Query 的 parse(String query) 返回 BooleanQuery(in version 8.7.0) 而不是 PhraseQuery(in version 2.9.4) 导致误报
最近我们将 Lucene 核心库从 v2.9.4 升级到 v8.7.0。
我们的一些测试开始失败,即搜索格式为“abc-def_1-2014”的关键字。
在 v2.9.4 中,这被解析为 PhraseQuery(包装在 BooleanQuery 中),分别包含 3 个术语“abc”、“def_1”和“2014”。
我们使用 CharTokenizer 来创建术语。
因此,一旦我们使用此查询在索引中进行搜索,它就会获取包含所有这些术语的文档。因此,我们得到了预期的结果。
升级到 8.7.0 后,我们开始获得比预期更多的结果。在调查时我们发现在 8.7.0 中 Query.parse() 方法返回的默认查询是布尔查询。因此,上面的关键字被标记化,并且创建了 3 个布尔子句,并且应该发生。因此,搜索者为我们提供了所有具有匹配项“abc”、“def_1”和“2014”的文档。
因此,我们获得的文档比之前预期的要多。
请帮助解决如何查找完全匹配的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。