【问题标题】:Join query of two cores doesn't work on Solr 8两个核心的连接查询在 Solr 8 上不起作用
【发布时间】:2019-05-07 07:10:02
【问题描述】:

我正在使用 2 个内核并尝试使用 Join 查询使结果依赖于 companyid,但我无法获得预期的结果。

first core : job (id,title,companyid)
second core : company (id,companyid,companyname)

expected result : title,companyid,companyname

这是我使用的查询。

http://localhost:8983/solr/job/select?q=*:*&fq={!join from=companyid to=companyid fromIndex=company}

【问题讨论】:

    标签: php solr


    【解决方案1】:

    Solr 中的联接与您在常规数据库中习惯的联接不同。连接是not able to return fields from both sides of the join - 即它只能用于过滤通过在连接另一侧查找的值的结果集。

    在您的示例中,您可以返回所有具有特定头衔的公司名称,但您不能在同一响应中同时返回 titlecompanyname(通过使用加入功能)。

    对于习惯使用 SQL 的人来说,重要的是要注意 Solr 中的 Join 并不真正等同于 SQL Join,因为没有关于“从”连接的表的信息被传递到最终结果中。更合适的 SQL 类比是“内部查询”。

    限制

    “from”连接的文档的字段或其他属性不可用于处理“to”文档的结果集(即:您不能在“from”文档中返回字段,就好像它们是“to”文档上的多值字段)

    不要认为文档数据库中的存储与规范化数据库相同。相反,将公司名称与带有标题的每个文档一起存储 - 将所有内容保存在一个核心而不是两个核心中。核心不用作表的直接替换。

    【讨论】:

      猜你喜欢
      • 2014-10-11
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      相关资源
      最近更新 更多