solr - 在 Solr 中处理大量 id

标签 solr solr4

我需要在 Solr 中执行在线搜索,即用户需要查找具有特定条件的在线用户列表。

我是如何处理的:我们将用户的 ID 存储在一个表中,然后在 Solr 请求中发送所有在线用户 ID,例如

&fq=-id:(id1 id2 id3 ............id5000)

这种方法的问题在于,当 id 变大时,Solr 需要花费太多时间来解决,我们需要通过网络传输大请求。

一种解决方案是在 Solr 中使用 join,但在线数据定期更改,我无法每次都对数据进行索引(比如 5-10 分钟,至少应该是一个小时)。

其他解决方案我认为根据 URL 中的某些参数从 Solr 内部触发此查询。我对 Solr 内部结构不太了解,所以不知道如何进行。

最佳答案

使用 Solr4 的软提交,提交已经变得足够便宜,以至于将“在线”标志直接存储在用户记录中可能是可行的,并且只需在您的查询中使用 &fq=online:true 即可。这减少了通过网络发送 5000 个 ID 并解析它们所涉及的开销,并让 Solr 稍微优化查询。每当有人登录或退出时,设置他们的状态并在更新中设置 commitWithin。无论如何,这值得一试。

关于solr - 在 Solr 中处理大量 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16315398/

相关文章:

Solr 搜索器变暖

configuration - 在 Solr Suggester 中使用多个字典

solr - 如何防止 solr 搜索中的特殊字符

java - 无法使用 SOLR 4.2 配置生成索引

apache - solr 4.4.0 : No such core 上的初始化错误

solr - 升级到solr3.6后defaultSearchField不工作

java - Solr dismax 突出显示不尊重分析器

solr - 使用 block 连接(嵌套字段)的 schema.xml 示例是什么?

mysql - 如何通过对solr中的天数进行分组来获取列的总和