В нашем проекте (на основе Zend Framework) мы должны найти замену стандартному Zend_Lucene.Сейчас я пытаюсь реализовать Solr с PHP Solr Client в нем.У нас есть 2 таблицы, в которые мы берем данные: категории и предложения.
В Zend_Lucene добавление данных для индексации происходит следующим образом:
/*Code above we create new index and take data from mysql
And here are the old methods:
offer - is array with query results
*/
$to_index = "{$offer["name"]} {$offer["type"]} {$offer["description"]}";
$doc = new Zend_Search_Lucene_Document();
$doc->addField( Zend_Search_Lucene_Field::Text('text', $to_index, "utf-8") );
$doc->addField( Zend_Search_Lucene_Field::Keyword('cat_id', $offer["cat_id"]) );
$doc->addField( Zend_Search_Lucene_Field::Keyword('type', "offer") );
$doc->addField( Zend_Search_Lucene_Field::Keyword('id', $offer["id"]) );
$doc->addField( Zend_Search_Lucene_Field::UnIndexed('created', time()) );
$this->index->addDocument($doc);
/*End of old code*/
Те же методы, что и для категорий /
В Solr и PHP Solr Client я изменил этот код (используя пример schema.xml по умолчанию):
$to_index = "{$category["name"]}";
$doc = new Apache_Solr_Document();
$doc->text = $to_index;
$doc->type = "category";
$doc->id = $category["id"];
$doc->created = time();
try {
$this->solr->addDocuments($doc);
$this->solr->commit();
$this->solr->optimize();
}
catch ( Exception $e ) {
echo $e->getMessage();
}
Но поиск по индексу дает мне 0!У меня есть подозрение, что Солр не делает правильный индекс.(Но при создании индекса нет сообщений об ошибках или исключений).Также я бы попытался дать Solr только текст и идентификаторы в методах.Но результат был тот же!
Что я делаю не так?Правильно ли я изменил методы Zend_Lucene?