繁体   English   中英

Lucene-搜索数组包含整数字段的地方

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM