gpt4 book ai didi

php - "documents"和 "cores"在 SOLR 中是什么意思?我该如何使用它们?

转载 作者:行者123 更新时间:2023-12-04 13:17:29 26 4
gpt4 key购买 nike

基于关系数据库的类比,我想知道 Solr 如何适应。
根据我到目前为止的想法,Solr 中的“文档”类似于 sql 中的“行”(如果我的 sql 表有 100 行,我需要在 solr 中插入 100 个文档)并且“核心”类似于“表”(或数据库?!?)。

问题是:
如果我有 2 组不相关的信息,假设一个包含汽车信息(id、名称、系列、颜色、描述)的表和一个包含用户信息(id、姓名、地址、年龄、性别)的表,我在哪里插入这些Solr中的东西?
我制作了 2 个核心(core_car、core_user)并用对应表中的文档填充每个核心?
或者我制作 1 个核心(core_general)并在那里插入两个表中的所有文档(以某种方式分开,我不知道如何分开)。

在第一种有 2 个内核的情况下,我感觉我正在创建 2 个数据库,每个数据库有 1 个表(矫枉过正)。
在第二个中,我感觉我正在创建 1 个表,其中所有不相关的字段都混在一起(如果存在某种形式的分离,情况就不会这样 - 我目前不知道)。

请确认与否我的假设。
先感谢您。

最佳答案

很高兴您在发布问题之前进行了探索。这是我的意见。

Solr文档 :可能更合适的理解这个概念的方式是从结果的角度来思考。在执行搜索查询后,每个 Solr 文档只不过是结果集中的一个结果条目。

如果您要索引 Wikipedia,则每篇文章都将是一个 Solr 文档。当您搜索“排序算法”时,您希望看到的结果是“冒泡排序”、“合并排序”等。它们中的每一个都是一篇文章、一个 Solr 文档和结果集中的一个结果。

如果您希望将此与 rdbms 概念联系起来,我想说每个搜索结果(即 Solr 文档)都可以是 sql 查询结果集中的一行。该行可以是单个表中的一行,也可以是 JOIN 表中的一行。

Solr核心只不过是 ONE lucene Index 的包装。每个 Solr 网络应用程序可以运行多个 Solr 核心。

加快理解速度的最佳方法是避免将 Solr 中的概念与 RDBMS 相关联。

探索 What Solr offers that RDMBS doesn't (有效率的)

这是另一个可能对您有所帮助的链接:Solr Terminology

您的用例

Solr/Lucene 的美妙之处在于灵活的模式,或者我会说没有模式。每个文档可以具有与先前索引的文档完全不同的字段和属性。

在同一个 lucene 索引(在你的例子中是 Solr Core)中有不同类型的文档(汽车、人等)是完全没问题的,只要它们是 可扩展 共。

例如,如果您有 5 亿汽车条目和 30 亿人条目,那么将它们分别编入索引是有意义的。如果您有 100 万人和 50 万辆汽车,您可以将它们全部放入同一个索引中,并使用包含实体类型的标识符字段。

你的问题很主观。不是每个人都会同意我说的话。在一个内核或多个内核之间做出决定取决于更多因素。

例如,

  • 这两个实体(人和汽车)是否相互补充以作为支持产品功能的逻辑块?
  • 在任何情况下,您都必须获得两种类型的查询结果。
  • 您更新每种类型实体的频率。 (Solr 中没有更新选项。只有删除和重新添加。)
  • 它们属于不同的产品功能吗?
  • 他们是否由不同的团队拥有,等等。
  • 关于php - "documents"和 "cores"在 SOLR 中是什么意思?我该如何使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19464648/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com