繁体   English   中英

Solr Query通过join搜索子文档和父文档

[英]Solr Query to search child and parent documents by join

我需要帮助构建一个Solr查询,它不仅会搜索子文档并返回父文档,还会搜索父文档。 请参阅下面的示例架构:

生产厂家

  • ID
  • 名称
  • 评论

制品

  • ID
  • ManufacturerId
  • 产品名称

所有Solr文档都有唯一的ID字段,但Products有一个特殊字段“ManufacturerId”作为外键。

我想搜索所有名为“iPod”的产品,并返回父“制造商”文档。 我可以通过使用以下Join语句来完成。

{!join from=ManufacturerId to=Id}ProductName:iPod

此外,我想撤回评论中有iPod的制造商。 因此,结果将包括所有拥有iPod产品且在其评论字段中包含iPod字样的制造商。 我试过以下没有运气。

{!join from=ManufacturerId to=Id}ProductName:iPod OR Comments:iPod

任何帮助将不胜感激。

谢谢!!

更新:

当我使用过滤器查询'fq'字段而不是常规查询字段'q'时,它似乎正常工作。 我不确定这是否是最佳解决方案。 此外,我想知道相关性是否会以相同的方式工作。 更好的解决方案。

Comments:iPod {!join from=RouteId to=Id}ProductName:iPod

要么

iPod {!join from=RouteId to=Id}ProductName:iPod

使用查询告诉Solr应该进行另一个将影响结果列表的查询。

q =

_query_:"{!join from=ManufacturerId to=Id}ProductName:iPod" OR Comments:iPod

如果你真的指的是孩子(又名嵌套)文件和父母,我建议你使用块连接:

https://cwiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-BlockJoinQueryParsers

这是专门为此目的而创建的。 为任何其他条件添加'OR',你应该没问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM