2013-02-16 130 views
1

我已經添加了一個字段IDSTORE NONOT ANALYZEDindex.ID字段中將只包含唯一的ID。如何在Lucene.Net中進行IN查詢

我想使用IN查詢。例如。如果我只想通過在索引中搜索具有ids 1,2,3,4的文檔,我試過QueryParser將ID與空格分開1 2 3 4.

它確實給了我。但是有沒有其他方法更快更可行?

+0

你可以把你正在嘗試構建的查詢 – 2013-02-16 10:06:10

+0

QueryParser par = new QueryParser(version.30,「Id」,new Standardanalyzer(version.30)); Query qry = par.parser(「1 2 3 4」 ); searcher.search(QRY,reader.maxdoc); – user1051536 2013-02-16 11:47:46

回答

2

如果你看看this question還有一些其他的方法來實現IN運算符。

默認情況下,傳遞給Lucene.Net(空格分隔的術語)的所有術語進行或運算。正在執行,

Id: 1 2 3 4 

將返回與任何通過的ID匹配的所有文檔。

您可以使用類似,

var collection = new[] { "1", "2", "3", "4" }; 
var query = new QueryParser(version, propertyName, analyzer) 
    .Parse(string.Join(" ", collection)); 

到的術語列表傳遞給Lucene.Net爲IN操作。