在 Solr 中搜索特定 ID

Posted

技术标签:

【中文标题】在 Solr 中搜索特定 ID【英文标题】:Search on specific IDs in Solr 【发布时间】:2016-05-07 20:55:40 【问题描述】:

假设我有一个包含约 1.5 亿文档的大型 Solr。 我还有 100,000 个用户,每个用户都有自己保存的文档。 我的问题:

    存储这些文档 ID(每个用户保存的文档)的最佳方式是什么 如果我决定将 ID 存储在 Mongo 或 mysql 中,允许用户对其文档进行搜索的最佳方式是什么,这意味着我仅将 Id 存储在 Mongo/MySQL 上,但实际信息在 Solr 上。

谢谢。

【问题讨论】:

【参考方案1】:

您可以将字段 username_s 添加到每个被索引的文档。此字段包含可以访问文档的用户名。如果您想让更多人访问此文档,您还可以使用一组用户。

然后您可以在后端添加 &fq=username_s:User。即使索引了 1 亿个文档,也只会显示属于用户的文档。

/core/select?q=*.*&fq=username_s:<User> 

您可以将所有用户的所有文档存储在同一个核心中,将“id”字段留空,solr 会自动为您生成一个 unqiue id。

【讨论】:

感谢您的回答,但我认为这个解决方案不会大规模运行,每个文档可以被 1000 多个用户访问,我如何在 username_s 中存储这么多 user_id? 为什么要在这个字段中存储这么多用户名?如果您希望每个人都可以访问此文档,请忽略 &fq=username_s 参数,或者对于某些用户,您可以定义一个组字段。要记录用户添加的文档中的 ID - 这需要在您自己的索引管道脚本中完成。每个文档都有自己的 ID。您可以将文档的 ID 记录到 MySQL 数据库中,并将其显示给创建它的用户,例如在 Web 界面中。

以上是关于在 Solr 中搜索特定 ID的主要内容,如果未能解决你的问题,请参考以下文章

使用and条件在mongodb文档的嵌套对象中搜索特定字符串

在一个用 JSON 填充的 NSArray 中搜索特定的标题

在 ArrayList 中搜索特定对象

在 htop 中搜索特定的进程名称

在字符串数组中搜索特定字符串。 [关闭]

在目录中搜索特定文件名