如何解决在Lucene中有效地执行批量完全匹配查找?
tl; dr:
使用一组键的完全匹配从Lucene批量获取文档的最佳方法是什么?
长版:
我们有一个Lucene索引持久存储到磁盘,该索引通过DirectoryReader
读取。
它包含2,000,000个具有以下模式的文档:
{"key": "20-character-string","value": "1-1000-character-string"}
我们现在需要执行与SELECT document WHERE document.key IN $keyArray
等效的操作,即使用精确匹配返回其键与$keyArray
(键项的10,000个项)相交的文档的子集。 / p>
有比进行10,000次单独搜索更好的方法吗?
解决方法
您应该使用TermInSetQuery
。
在后台,它使用BooleanQuery
个实例的序列进行ORd运算,如果集合中的术语少于16个,则使用更有效的方法(可能是某种哈希集)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。