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

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

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

谢谢。

【问题讨论】:

    标签: sql solr bigdata


    【解决方案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 界面中。
    猜你喜欢
    • 2013-03-18
    • 2015-07-13
    • 1970-01-01
    • 2014-06-24
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多