1

SQL 服务器可以使用 IN 运算符查询特定 ID,例如:

ID in (2,23,122,44,22) 

我使用相同的查询在另一个页面中显示相关结果。我必须转移到 lucene.net 以提高显示速度,所以我需要替换上面使用的旧代码。我在谷歌上搜索了很多,但没有找到任何替代方案。

我尝试在 lucene.net 中编写布尔查询,例如:

ID:1 OR ID:2 OR ID:3 

...但由于 1024 表达式的限制,我也无法使用这种方式。请建议我该如何解决这个问题。

4

2 回答 2

0

默认情况下,布尔查询中的最大子句数为 1024。

您可以增加此限制。

但是,会有性能损失。或者您可以索引文档上的值并搜索它们(lucene 将对具有相同名称的不同字段执行 OR 操作)。

您可以使用 BooleanQuery 类的静态属性更改限制:

 BooleanQuery.MaxClauseCount = 99999;

暗里

于 2013-02-11T05:40:15.030 回答
0

默认情况下,查询中的所有术语默认为 ORed:

ID: 1 2 3

这将返回 ID 为 1、2 和 3 的所有文档的列表。

您可以使用一个简单的查询,

var ids = new[] { "1", "2", "3" };
var query = new QueryParser(version, idProperty, analyzer).Parse(string.Join(" ", ids));
于 2013-02-17T00:09:04.517 回答