使用两个filter子句查询父文档

时间:2018-06-13 11:36:21

标签: solr

我正在使用Solr,我想使用两个约束来查询父文档。它目前只适用于一个禁令。

示例:

q={!parent which=type:parent}child_field:something

但是我想获得被定义为父文件的父文件(type attribute =“parent”)并且在字段“name”中有一些特定的单词。

我尝试了以下操作,但它返回错误:

q={!parent which=(type:parent) AND (name:someone)}child_field:something
  

org.apache.solr.search.SyntaxError:pos 33 str ='{!parent =(type:parent)AND(name:someone)} child_field:something'

的预期标识符

1 个答案:

答案 0 :(得分:1)

根据BlockJoinParentQueryParser下的建议:

  

使用哪个   一个常见的错误是尝试使用哪个过滤器过滤父母,如下面的错误示例所示:

     

<?php class database { public $host = "_"; public $user = "_"; public $pass = "_"; public $db = "_"; public $conn = null; function connect() { return mysqli_connect($this->host, $this->user, $this->pass, $this->db); } function query($sql) { return mysqli_query($this->conn, $sql); } function escapestring($string){ return mysqli_real_escape_string($this->conn, $string); } function getrows($sql){ return mysqli_num_rows($sql); } } ?>

     

相反,您应该使用兄弟强制子句作为过滤器:

     

q={!parent which="title:join"}comments:SolrCloud

因此,从该示例得出,将所需的过滤器作为第一个强制子句应该起作用:

q=+title:join +{!parent which="content_type:parentDocument"}comments:SolrCloud