Нет совпадений с Zend Search MultiTerm Query? (Должно быть 3)
У меня есть поисковая форма с названием, клубом, натранкингом, даблранксингом и полем клуба. Я выбрал клуб в поле выбора, оставил поле с именем пустым и нажал "Поиск". Результат не имеет просмотров. Там должно быть 3, поскольку в базе данных есть 3 записи, которые являются частью этого выбранного клуба. Это почему?
Спасибо.
Класс контроллера:
$search = $this->get('ewz_search.lucene');
// Create query
$terms = array(new Term($form->getData()->getName(), 'name'),
new Term($form->getData()->getClub(), 'club'),
new Term($form->getData()->getNatRanking(), 'natranking'),
new Term($form->getData()->getNatDoublesRanking(), 'doublesranking')
);
$signs = array(TRUE, TRUE, TRUE, TRUE);
$query = new MultiTerm($terms, $signs);
// Get results
$results = $search->find($query);
// Echo prints: "+name: +club:A.R.A. LA GANTOISE +natranking: +doublesranking:"
echo $query;
// This returns 0
die("debug: " . count($results);
//РЕДАКТИРОВАТЬ
Это работает (дает мне 3 результата):
$manual_query = "+name: +club:A.R.A. LA GANTOISE +natranking: +doublesranking:";
1 ответ
Решение
Я поместил объект Multiterm в строку, и теперь он работает. Это странно, так как пример в документации ясно показывает, что он должен работать без преобразования в строку:
Пример из документов (http://framework.zend.com/manual/en/zend.search.lucene.query-api.html#zend.search.lucene.queries.multiterm-query)
$query = new Zend_Search_Lucene_Search_Query_MultiTerm();
$query->addTerm(new Zend_Search_Lucene_Index_Term('word1'), true);
$query->addTerm(new Zend_Search_Lucene_Index_Term('word2', 'author'),
null);
$query->addTerm(new Zend_Search_Lucene_Index_Term('word3'), false);
$hits = $index->find($query);