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个键的数组)相交的文档子集。
有没有比执行10,000个单独的搜索更好的方法?
1条答案
按热度按时间qnzebej01#
您应该使用
TermInSetQuery
。如果集合中的项少于16个,则它使用
BooleanQuery
示例的序列ORd,否则它使用更有效的方法(可能是排序的散列集)。