[英]Lucene - Search where array contains integer field
我有一个整数数组,需要搜索Lucene索引,其中特定字段值属于此数组。
现在,我只是想做这样的事情(尚未经过测试,只是想法):
var arrayWithIds = int[] {501,828,2837,928,2882....};
var booleanQuery = new BooleanQuery();
foreach(var id in arrayWithIds)
{
var subQuery = new TermQuery(new Term("Id",NumericUtils.IntToPrefixCoded(id)));
booleanQuery.Add(subQuery, BooleanClause.Occur.SHOULD);
}
...然后我使用booleanQuery
进行搜索
还有其他办法吗?
我正在使用Lucene.net 2.9。 由于其他依赖性,无法升级到较新版本。
我倾向于将您的数字ID字段改为字符串字段。 看起来它们实际上并不代表数字字段,而只是代表恰好是数字的标识符。 只是一个猜测而已。 我不喜欢使用IntToPrefixCoded
,因为它仅供Lucene在内部使用(因此,如果Lucene.Net升至Lucene 4.0,则对NumericUtils
会有重大的,非向后兼容的更改)版)。
不过,构造查询的方式很好。 如果您传递了类似id:(501 828 2837 928 2882)
,则QueryParser会产生相同的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.