[英]Solr Query to search child and parent documents by join
我需要帮助构建一个Solr查询,它不仅会搜索子文档并返回父文档,还会搜索父文档。 请参阅下面的示例架构:
生产厂家
制品
所有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.