Solr 单索引 vs Solr 多核

标签 solr lucene solrnet solr4 solrcloud

我需要一些帮助来决定在单个 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/

    相关文章:

    java - 使用 SOLR 来自 Cassandra 数据库没有响应

    java - Solr 为 "Standalone binary in Desktop Client"没有服务器

    solr - 触发所有待处理文档的 SOLR 提交的最简单方法(URL?)?

    java - Lucene 的 Ruby 替代品

    search - Liferay、搜索和安全模型

    solr - Solr 的 Amazon EC2 实例类型

    c# - 如何在 Lucene.NET 中搜索 Field.Index.NOT_ANALYZED 字段?

    c# - 如何在solrNet中查询

    solr - 如何使用solrnet在solr中使字段搜索不区分大小写

    c# - 在我遇到命中的位置打开文件