2016-09-08 4 views
1

Когда я выполняю этот код в Solr APISymfony Nelmio Солярий Bundle FilterQuery

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

Он отлично работает и возвращает данные, которые соответствуют Фильтрация запроса.

Но когда я пытаюсь тем же запрос в солярии пачке

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

Я получаю эту ошибку

Catchable Fatal Error: Argument 1 passed to Solarium\QueryType\Select\Query\Query::addFilterQueries() must be of the type array, string given, called in /var/www/html/conference/vendor/solarium/solarium/library/Solarium/QueryType/Select/Query/Query.php on line 737 and defined

я должен заметить, что Солярий расслоение хорошо работает с

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

ответ

1

Ошибка или сообщение сообщает вам, в чем проблема.

попробовать:

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

Или так как вы хотите добавить только один Filterquery использовать документированный путь от солярия Docs (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 использует синтаксис массива, поскольку для каждого фильтра требуется его уникальный идентификатор.