如何在Lucene.Net中进行IN查询

时间:2013-02-16 09:40:06

标签: lucene.net

我在ID字段中添加了一个STORE NO字段NOT ANALYZED,而index.ID字段中的IN只包含唯一ID。

我想使用{{1}}查询。例如。如果我只想通过索引搜索ID为1,2,3,4的文档,我尝试使用空格1 2 3 4分隔ID的QueryParser。

它确实给了我。但是还有其他方法更快更可行吗?

1 个答案:

答案 0 :(得分:2)

如果您查看this question,可以使用其他方法来实现IN运算符。

默认情况下,传递给Lucene.Net的所有术语(以空格分隔的术语)都是ORed。执行,

Id: 1 2 3 4

将返回与传递的任何ID相匹配的所有文档。

你可以使用类似的东西,

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

将一个术语列表作为IN运算符传递给Lucene.Net。