【问题标题】:Symfony Nelmio Solarium Bundle FilterQuerySymfony Nelmio 日光浴室捆绑过滤器查询
【发布时间】:2016-09-08 19:44:39
【问题描述】:

当我在 solr API 中执行这段代码时

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

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

但是当我在 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 行并定义

我必须注意到 Solarium 捆绑包可以很好地配合

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

【问题讨论】:

    标签: php symfony solr solarium


    【解决方案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 使用数组语法,因为每个过滤器查询都需要其唯一标识符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多