2013-02-16 94 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操作。