两个核心的联接查询在Solr 8上不起作用

时间:2019-05-07 07:10:03

标签: php solr

我使用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}

1 个答案:

答案 0 :(得分:1)

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

在您的示例中,您可以返回所有具有特定标题的公司名称,但不能在同一响应中返回titlecompanyname(使用连接功能)。

  

对于那些习惯使用SQL的人来说,需要特别注意的是Solr中的Join并不真正等同于SQL Joins,因为没有关于被“ from”联接的表的信息会被传递到最终结果中。一个更合适的SQL类比是“内部查询”。

     

限制

     

“发件人”中要连接的文档的字段或其他属性不可用于处理“发件人”文档的结果集(即:您不能像在“发件人”文档中那样返回字段。 “收件人”文档上的多值字段)

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