在 Lucene 中高效地执行批量精确匹配查找?
Efficiently performing a bulk exact-match lookup in Lucene?
tl;博士:
使用一组键的精确匹配从 Lucene 批量获取文档的最佳方法是什么?
长版:
我们有一个持久保存到磁盘的 Lucene 索引,通过 DirectoryReader
.
读取。
它包含 2,000,000 个具有以下架构的文档:
{"key": "20-character-string", "value": "1-1000-character-string"}
我们现在需要执行 SELECT document WHERE document.key IN $keyArray
的等效操作——即 return 其键与 $keyArray
(包含 10,000 项的键数组)相交的文档子集,使用完全匹配。
有没有比执行 10,000 次单独搜索更好的方法?
你应该使用 TermInSetQuery
.
在引擎盖下它使用一系列 BooleanQuery
个实例 ORd 在一起,如果你的集合中的术语少于 16 个,否则它使用更有效的东西(大概是各种哈希集)。
tl;博士:
使用一组键的精确匹配从 Lucene 批量获取文档的最佳方法是什么?
长版:
我们有一个持久保存到磁盘的 Lucene 索引,通过 DirectoryReader
.
它包含 2,000,000 个具有以下架构的文档:
{"key": "20-character-string", "value": "1-1000-character-string"}
我们现在需要执行 SELECT document WHERE document.key IN $keyArray
的等效操作——即 return 其键与 $keyArray
(包含 10,000 项的键数组)相交的文档子集,使用完全匹配。
有没有比执行 10,000 次单独搜索更好的方法?
你应该使用 TermInSetQuery
.
在引擎盖下它使用一系列 BooleanQuery
个实例 ORd 在一起,如果你的集合中的术语少于 16 个,否则它使用更有效的东西(大概是各种哈希集)。