EDIT:Zend_Search_Lucene Помощь
мне удалось решить эту проблему с помощью:
+"lorem ipsum" +type:photo
+"lorem ipsum" +type:video
Еще одна проблема, хотя в том, что индекс возвращает правильные результаты, но с неправильным идентификатором (ID является первичным ключ). Более конкретно, возвращаемые поля id на 1 меньше, чем реальные идентификаторы (id-1) в базе данных, которые я использую для создания индекса.
Это очень странно.
Что с этими поисковыми запросами:
"lorem ipsum" AND +type:photo
"lorem ipsum" AND +type:video
Первого запрос должен найти только результаты с типом = фото, второй один ищет только видео. Но они оба возвращают фотографии и видео.
Вот как я строю индекс:
// create media index
$index = Zend_Search_Lucene::create('/data/media_index');
// get all media
$media = $this->_getTable('Media')->get();
// iterate through media and build index
foreach ($media as $m) {
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('id',
$m->id));
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('thumb_path',
$m->thumb_path));
$doc->addField(Zend_Search_Lucene_Field::Keyword('title',
$m->title));
$doc->addField(Zend_Search_Lucene_Field::UnStored('description',
$m->description));
$doc->addField(Zend_Search_Lucene_Field::Keyword('type',
$m->type));
$index->addDocument($doc);
}
// commit the index
$index->commit();
А вот как я искать его:
$index = Zend_Search_Lucene::open('/data/media_index');
$this->view->photos = $index->find('"lorem ipsum" AND +type:photo');
$this->view->videos = $index->find('"lorem ipsum" AND +type:video');
Любые идеи?
Я думаю, что сделал. Еще одна проблема: поиск возвращает результаты, начинающиеся с id = 0 (id - первичный ключ), а id в базе данных начинается с 1. Кажется, индекс возвращает id - 1. –
Почему это? Насколько я вижу. –
Я отредактировал мое первое сообщение. –