首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lucene查询大小--这是可扩展的吗?查询“%1 OR %2 OR %3..OR%N”

lucene查询大小--这是可扩展的吗?查询“%1 OR %2 OR %3..OR%N”
EN

Stack Overflow用户
提问于 2010-08-24 16:16:59
回答 5查看 1.7K关注 0票数 4

假设我有一个lucene查询'id1 OR id2 OR id3 ... idN‘。随着N的增加,这种伸缩性有多好?

我看到的情况类似于有人在购物车中对产品进行文本搜索,但他们的购物车中可能有成百上千个商品。用户想要对购物车中的所有产品进行文本搜索。我是否可以对所有可用产品执行文本查询,然后限制在其购物车中使用产品I的OR子句返回的项目?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-08-24 18:09:26

默认情况下,布尔查询中的最大子句数为1024。您可以增加此限制。不过,这会带来性能损失。我想,如果你使用过滤器,它将是有效的。

票数 4
EN

Stack Overflow用户

发布于 2010-08-26 00:56:12

正如一些人已经回答的那样,有实际的限制。然而,如果你对这个理论感兴趣,那么做一堆“或”字词和一个有很多可能结果的字词并没有什么不同。如果p是与您的查询匹配的帖子(术语/文档对)的数量,并且您希望找到k个最佳匹配,则查询将以O(p log k)的速度运行。参见Doug的论文Space Optimizations for Total Ranking

如果在索引总数中有q个查询项或在一起,t个项,那么它实际上类似于O( query +p),但对于大多数应用程序,p将占据主导地位。(这个公式来自于这样一个事实,即查找发布流需要log t时间,并且每个查询项必须查找一次。)

票数 2
EN

Stack Overflow用户

发布于 2010-08-24 23:17:11

正如@Shashikant Kore提到的,默认情况下限制是1024。

如果您有一个非常大的文本集合,您可能希望查看MoreLikeThis实现-它使用一些整洁的启发式方法从您拥有的内容生成具有代表性的查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3554604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档