我需要一些帮助来决定在单个 Solr 实例中创建单个索引与在单个 Solr 实例中创建多个核心,每个核心服务一个索引。我的理解是,solr 中的单个索引通常用于索引一种类型的文档。当您拥有不同的文档类型时,最佳做法是什么?例如,如果您想索引发票交易的详细信息,您可以创建一个包含发票交易文档字段的模式,如下所示;
- 发票日期
- 截止日期
- 发票总结
- 帐单联系人
- invoiceLineItems
- 笔记
假设您还想索引产品的详细信息,您是否会创建一个具有如下架构的新文档类型;
- 产品代码
- 产品描述
- 售价
- 购买价格
- 手上
- 平均成本
- 笔记
并在 Solr 中创建一个新核心来索引产品文档?或者您会将交易和产品合并到一个模式中,如下所示;
- 发票日期
- 截止日期
- 发票总结
- 帐单联系人
- invoiceLineItems
- 产品代码
- 产品描述
- 售价
- 购买价格
- 手上
- 平均成本
- 笔记
并且只有一个核心索引上述文档,而不是有一个“发票”核心和一个“产品”核心索引两个不同的文档?
我想当字段相似时,像Solr wiki中建议的那样拥有一个单一的平面索引是有意义的,但是在上面这样的示例中,数据甚至没有远程相关,因为它们是独立的实体。我见过人们建议添加一个额外的字段来区分不同实体的情况,例如表名字段或类似字段,并根据表名字段过滤查询,我猜这是可行的。我不确定当您有如下用例时,它的可扩展性有多大;
“在发票中搜索关键字“John”,要搜索的字段是“billingContact”、“invoiceSummary”、“notes”。在查询时提升“billingContact”字段。同时搜索产品“John”,要搜索的字段是“ productDescription'、'supplier'、'notes'。在查询时提升 'supplier'。仅返回 100 个发票和 100 个产品。
我正在处理的应用程序需要从一个表单中搜索发票和产品。应用程序中没有不同的部分可以搜索不同的内容。
我担心将所有内容都放在一个索引中;
1)索引规模大如:5000万张发票+5000万单索引产品
2) 重新索引该大小的索引。
3)索引调整:调整/调整每个单独的索引以服务于特定的预期搜索结果会更容易吗?而不是尝试在单个索引中做到这一点?
4) 我们决定将来也将计费联系方式编入索引。这将添加更多要索引的字段,并有助于我在第 1 点和第 2 点中的担忧。