2011-01-19 2 views
1

В нашем проекте (на основе 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?

+0

Решение моей проблемы вы можете найти здесь: http://groups.google.com/group/php-solr-client/browse_thread/thread/204261f54411628b?pli=1 –

ответ

2

Я бы рекомендовал использовать «DataImportHandler», встроенный в Solr, для импорта данных из базы данных в движок Solr.

Он выполнит эту работу за вас, и вы сможете настроить «полный импорт», который будет импортировать всю базу данных и «дельта-импорт», которые будут просто импортировать новые данные из базы данных. Вы также можете настроить «удалить», чтобы удалить данные удаленной базы данных.

+0

... или посмотреть, как drupal сделал Это ;) – Karussell

Смежные вопросы