我在框架查询中使用OR,逻辑运算符时遇到了这些问题.我不想增加maxBooleanClause值.还有其他选择吗?我的OR范围可以达到2百万.我宁愿希望如果超出范围maxBooleanClause而不是solr拆分查询,最后合并所有子查询.这种事情有可能吗?或者,如果你们中的任何一个人可以建议一些更好的技术来做到
我想绘制一个图表,其中用户提供一些日期范围,例如2013-03-01至2013-06-01之间的所有访问者访问应用程序.这里我想做一个查询,它是所有唯一id的OR.例如
uniqueId:(1001 OR 1003 OR 1009 OR ........ OR 102467)
Run Code Online (Sandbox Code Playgroud)
感谢帮助.
Solr强加了一个maxBooleanClause正是因为这是一种超出其最佳位置的东西.最终,如果您需要数百万次搜索,那么您需要在Solr之外进行自己的分发和聚合.
我将走出困境,并猜测这些条款是图形相关的,这是我看到这类查询最常见的地方.在这种情况下,你可能会在这里保持Solr的优势.
有时反转过滤器的逻辑是有意义的,而不是传递一大组值来过滤,将这些值索引到您正在搜索的文档上,以便稍后传递单个值.
例如,假设您有一个人的索引.并且说你想搜索与某个特定人物成为朋友的人.您可以生成所有朋友的ID列表,以过滤搜索.但是你会遇到与你在这里看到的类似的问题:很多很多OR条款.
或者,您可以将每个人的朋友列表编入索尔.现在,您将拥有一个包含数千个值的字段,但您的查询过滤器将只有一个值:您过滤搜索的网络的人员ID.
就搜索机制而言,这对Solr的优势更为重要.但是,有一个成本.您需要自己管理非规范化,并且可能会对文档进行大量更新,或者在更新图形时遇到一些延迟.
如果这证明太繁重,您可能需要考虑更好地优化图遍历的不同技术.