1

当我在 solr API 中执行此代码时

....fq=title:(bionformatics OR scince)...

它工作正常并返回适合过滤查询的数据。

但是当我在 Solarium bundle 中尝试相同的查询时

$client = $this->solr->getClient();
$query = $client->createSelect();
$query->setFilterQueries('title:("bionformatics" OR "scince")');

我收到这个错误

可捕获的致命错误:传递给 Solarium\QueryType\Select\Query\Query::addFilterQueries() 的参数 1 必须是数组类型,给定字符串,在 /var/www/html/conference/vendor/solarium/solarium/library 中调用/Solarium/QueryType/Select/Query/Query.php 在第 737 行并定义

我必须注意到 Solarium 捆绑包与

$query->setQuery('title:"bionformatics" OR title:"scince"');

4

1 回答 1

1

错误消息准确地告诉您问题所在。

尝试:

$query->setFilterQueries(array('titleFilter' => 'title:("bioinformatics" OR "science")'));

或者,由于您只想添加一个 Filterquery,请使用日光浴室文档中记录的方式(http://solarium.readthedocs.io/en/stable/queries/select-query/building-a-select-query/adding-filterqueries / )

// get a select query instance
$query = $client->createSelect();

// create a filterquery
$query->createFilterQuery('maxprice')->setQuery('price:[1 TO 300]');

// this executes the query and returns the result
$resultset = $client->select($query);

当您查看此示例时,也很清楚为什么 setFilterQueries 使用数组语法,因为每个过滤器查询都需要其唯一标识符。

于 2016-09-09T09:20:17.087 回答