SOLR中的“文档”和“核心”是什么意思?我该如何使用它们?

时间:2013-10-19 09:46:59

标签: php search solr

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

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

在第一个包含2个核心的情况下,我感觉我正在创建2个数据库,每个数据库中有1个表(过度杀伤)。 在第二个我感觉我正在创建一张桌子,其中所有不相关的字段一起组合(如果存在某种形式的分离,那就不会出现这种情况 - 我目前还不知道)

请确认我的推定。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

在发布问题之前,您已经探索过了。这是我的意见。

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

如果您要为维基百科编制索引,那么每篇文章都是Solr文档。当您搜索“排序算法”时,您希望看到的结果是“冒泡排序”,“合并排序”等。每个结果都是文章,Solr文档和结果集中的结果。

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

Solr Core 只不过是一个lucene索引的包装器。每个Solr Web应用程序都可以运行多个Solr Core。

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

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

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

您的用例

Solr / Lucene的美丽是灵活的架构,或者我说没有架构。每个文档可以具有与索引的先前文档完全不同的字段和属性。

在相同的lucene索引(在您的情况下为Solr Core)中提供不同类型的文档(汽车,人等)是完全没问题的,只要它们完全可扩展即可。

例如,如果您有500M车辆条目和30亿人参赛作品,则将它们分开编制是有意义的。如果您有1mn人员和500k车辆,您可以使用包含实体类型的标识符字段将所有这些车辆填充到同一索引中。

你的问题非常主观。不是每个人都同意我说的话。这取决于在一个核心或多个核心之间决定的更多因素。

例如,

  1. 这两个实体(人和车)是否相互补充以作为逻辑块以支持产品功能?
  2. 在任何情况下,您都必须为查询获取两种类型的结果。
  3. 您更新每种类型实体的频率。 (Solr中没有更新选项。它只是删除和重新添加。)
  4. 它们属于不同的产品功能吗?
  5. 他们是否拥有不同的团队等。