Verwenden von Zend Search Lucene mit Symfony 2 - php, symfony, zend-search-lucene

Ich habe ein Suchformular in meiner Webapp, wo Benutzer andere nach Name, Clubname, ... suchen können. Dies ist der Code, den ich für die Suche verwende, aber er gibt mir keine "Treffer".

$search = $this->get("ewz_search.lucene");

$query = new MultiTerm();
$query->addTerm(new Term($form->getData()->getName()));
$query->addTerm(new Term($form->getData()->getClub()->getId()));

// See point 1 to see what this displays
var_dump($query);

// See point 2 to see what this displays
die("debug: " . $query);

// If I use this instead of the MultiTerm, I do get a hit
// $query = "Mathew";

$hits = $search->find($query);

Point 1:Objekt (ZendSearchLuceneSearchQueryMultiTerm) # 644 (9) {["_terms": "ZendSearchLuceneSearchQueryMultiTerm": privat] => array (2) {[0] => Objekt (ZendSearchLuceneIndexTerm) # 638 (2) {["field"] => NULL ["text"] => string (12) "Mathew"} [1] => Objekt (ZendSearchLuceneIndexTerm) # 637 (2) {["field"] => NULL ["text"] => int (1) }} ["_signs": "ZendSearchLuceneSearchQueryMultiTerm": privat] => array (2) {[0] => NULL [1] => NULL} ["_resVector": "ZendSearchLuceneSearchQueryMultiTerm": privat] => NULL ["_termsFreqs ":" ZendSearchLuceneSearchQueryMultiTerm ": privat] => array (0) {} [" _coord ":" ZendSearchLuceneSearchQueryMultiTerm ": privat] => NULL [" _weights ":" ZendSearchLuceneSearchQueryMultiTerm ": private] => array (0) {} [ "_boost": "ZendSearchLuceneSearchQueryAbstractQuery": privat] => int (1) ["_weight": geschützt] => NULL ["_currentColorIndex": "ZendSearchLuceneSearchQueryAbstractQuery": privat] => int (0)}

Punkt 2: debug: Matthäus 1

Danke.

Antworten:

2 für die Antwort № 1

Überprüfen Sie den Standardbezeichner. Wenn Sie separate Feldindizes für Clubid und Name haben, können Sie den Feldnamen voranstellen.

$query = "name:Mathew AND clubid:1";

Siehe die Parsersyntax für mehr Informationen.


0 für die Antwort № 2

Fand es! Ich hatte das:

$document->addField(Field::text("Name", $user->getName()));

Anstatt von:

$document->addField(Field::text("name", $user->getName()));

Verwandte Fragen
Speisekarte