我使用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}
答案 0 :(得分:1)
Solr中的JOIN与常规数据库中的联接不同。联接是not able to return fields from both sides of the join-即它只能用于通过联接另一侧查找的值来过滤结果集。
在您的示例中,您可以返回所有具有特定标题的公司名称,但不能在同一响应中返回title
和companyname
(使用连接功能)。
对于那些习惯使用SQL的人来说,需要特别注意的是Solr中的Join并不真正等同于SQL Joins,因为没有关于被“ from”联接的表的信息会被传递到最终结果中。一个更合适的SQL类比是“内部查询”。
限制
“发件人”中要连接的文档的字段或其他属性不可用于处理“发件人”文档的结果集(即:您不能像在“发件人”文档中那样返回字段。 “收件人”文档上的多值字段)
不要认为文档数据库中的存储与规范化数据库相同。取而代之的是,将公司名称与每个带有标题的文档一起存储-将所有内容都保留在一个核心中,而不是两个。核心不能用作表的直接替换。