2016-09-08 5 views
1

Wenn ich diesen Code in solr APISymfony Nelmio Solarium Bundle FilterQuery

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

Es funktioniert gut und das Rück Daten auszuführen, die filtern Suchmuster passen.

Aber wenn ich die gleiche Abfrage in Solarium Bündel versuchen

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

Ich erhalte diese Fehler

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

ich, dass Solarium Bundle mit

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

funktioniert gut merken müssen

Antwort

1

Der Fehler oder eine Nachricht sagt Ihnen genau, was das Problem ist.

Versuch:

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

Oder, da Sie nur eine einzige Filterquery hinzufügen mögen die dokumentierte Art und Weise von der Solarium-Dokumentation verwenden (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); 

Wenn Sie an diesem Beispiel sehen ist es auch Klar, warum setFilterQueries die Array-Syntax verwendet, da jede Filteranfrage ihren eindeutigen Bezeichner benötigt.

Verwandte Themen