В нашем проекте (на основе Zend Framework) мы должны найти замену по умолчанию Zend_Lucene. Теперь я пытаюсь реализовать Solr с PHP Solr Client в нем. У нас есть 2 таблицы, где мы берем данные: категории и предложения.Миграция из Zend_Lucene в Solr
В данных аддитивных 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, я изменил этот код (используя пример по умолчанию 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 не делает правильный индекс. (Но при создании индекса отсутствуют сообщения об ошибках или исключения). Также я попытался бы дать Solr только текст и полюсы id в методах. Но результат был тот же!
Что я делаю неправильно? Я правильно изменил методы Zend_Lucene?
Решение моей проблемы вы можете найти здесь: http://groups.google.com/group/php-solr-client/browse_thread/thread/204261f54411628b?pli=1 –