簡體   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