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