在Lucene中高效地执行批量精确匹配查找?

在Lucene中高效地执行批量精确匹配查找?,lucene,Lucene,tl;医生: 使用一组密钥上的精确匹配从Lucene批量获取文档的最佳方法是什么 长版本: 我们有一个Lucene索引保存到磁盘,该索引通过DirectoryReader读取 它包含2000000个具有以下架构的文档: {“键”:“20个字符串”,“值”:“1-1000个字符串”} 我们现在需要执行一个等价的SELECT document WHERE document.key IN$keyArray——即使用精确匹配返回其关键字与$keyArray相交的文档子集(10000项关键字数组) 有比

tl;医生:

使用一组密钥上的精确匹配从Lucene批量获取文档的最佳方法是什么


长版本:

我们有一个Lucene索引保存到磁盘,该索引通过
DirectoryReader
读取

它包含2000000个具有以下架构的文档:

{“键”:“20个字符串”,“值”:“1-1000个字符串”}

我们现在需要执行一个等价的
SELECT document WHERE document.key IN$keyArray
——即使用精确匹配返回其关键字与
$keyArray
相交的文档子集(10000项关键字数组)


有比执行10000次单独搜索更好的方法吗?

您应该使用
TermInSetQuery


在引擎罩下,它使用一系列
BooleanQuery
实例,如果集合中的术语少于16个,则使用更有效的术语(可能是一组排序)。

您应该使用
TermInSetQuery


在引擎盖下,它使用一系列
BooleanQuery
实例,如果集合中的术语少于16个,则使用更有效的术语(可能是一组哈希)。我相信
TermInSetQuery
是我要找的。我相信
TermInSetQuery
是我要找的。