我需要一些帮助来决定在单个 Solr 实例中创建单个索引还是在单个 Solr 实例中创建多个核心,每个核心为一个索引提供服务。
我的理解是,solr 中的单个索引通常用于索引一种类型的文档。当您有不同的文档类型时,最佳实践是什么?例如,如果您想索引发票交易的详细信息,您可以创建一个包含发票交易文档字段的架构,如下所示;
假设您还想索引产品的详细信息,您是否会创建一个具有如下架构的新文档类型;
并在 Solr 中创建一个新的核心来索引产品文档?或者您将交易和产品合并到一个模式中,如下所示;
并且只有一个核心索引上述文件,而不是索引两个不同文档的“发票”核心和“产品”核心?
我想按照 Solr wiki 中的建议使用单个平面索引是有意义的。当字段相似时,但是在上面的示例中,数据甚至彼此之间没有远程关联,因为它们是单独的实体。我见过有人建议添加一个额外的字段来区分不同实体的情况,比如表名字段或类似的,并根据表名字段过滤查询,我猜这是可行的。当您有如下用例时,我不确定它的可扩展性有多远;
“搜索关键字'John'的发票,要搜索的字段是'billingContact','invoiceSummary','notes'。在查询时提升'billingContact'字段。同时搜索'John'的产品,要搜索的字段是' productDescription', 'supplier', 'notes'。查询时提升 'supplier'。只返回 100 张发票和 100 个产品。”
我正在处理的应用程序需要从单个表单中搜索发票和产品。应用程序中没有不同的部分来搜索不同的东西。
我担心将所有内容都放在一个索引中;
1)大索引规模例如:单索引5000万张发票+5000万个产品
2)重新索引该大小的索引。
3) 索引调整:调整/调整每个单独的索引以提供特定的预期搜索结果,而不是尝试在单个索引中执行此操作不是更容易吗?
4) 我们决定将来也索引计费联系方式。这将添加更多要索引的字段,并有助于解决我在第 1) 和 2) 点中的担忧。
最佳答案
Return only 100 invoices and 100 products.
还
Boost 'billingContact' field at query time Boost 'supplier' at query time
这表明即使您正在搜索相同的术语,您也是在将它们作为单独的概念进行搜索。
基于这一点以及缺乏通用字段,我建议从单独的集合开始。
关于Solr 单索引 vs Solr 多核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19624343/