Symfony Nelmio Solarium Bundle FilterQuery

时间:2016-09-08 19:44:40

标签: php symfony solr solarium

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

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

它工作正常并返回适合Filter Query的数据。

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

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

我收到此错误

  

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

我必须注意到日光浴束与

配合得很好

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

1 个答案:

答案 0 :(得分: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使用数组语法,因为每个filterquery都需要其唯一标识符。