在Lucene中高效地执行批量精确匹配查找?
tl;医生: 使用一组密钥上的精确匹配从Lucene批量获取文档的最佳方法是什么在Lucene中高效地执行批量精确匹配查找?,lucene,Lucene,tl;医生: 使用一组密钥上的精确匹配从Lucene批量获取文档的最佳方法是什么 长版本: 我们有一个Lucene索引保存到磁盘,该索引通过DirectoryReader读取 它包含2000000个具有以下架构的文档: {“键”:“20个字符串”,“值”:“1-1000个字符串”} 我们现在需要执行一个等价的SELECT document WHERE document.key IN$keyArray——即使用精确匹配返回其关键字与$keyArray相交的文档子集(10000项关键字数组) 有比
长版本: 我们有一个Lucene索引保存到磁盘,该索引通过
DirectoryReader
读取
它包含2000000个具有以下架构的文档:
{“键”:“20个字符串”,“值”:“1-1000个字符串”}
我们现在需要执行一个等价的SELECT document WHERE document.key IN$keyArray
——即使用精确匹配返回其关键字与$keyArray
相交的文档子集(10000项关键字数组)
有比执行10000次单独搜索更好的方法吗?您应该使用
TermInSetQuery
在引擎罩下,它使用一系列
BooleanQuery
实例,如果集合中的术语少于16个,则使用更有效的术语(可能是一组排序)。您应该使用TermInSetQuery
在引擎盖下,它使用一系列
BooleanQuery
实例,如果集合中的术语少于16个,则使用更有效的术语(可能是一组哈希)。我相信TermInSetQuery
是我要找的。我相信TermInSetQuery
是我要找的。