У меня есть реализация Zend_Search_Lucene в приложении Symfony2.Я использую Zend 1.11.Индекс, кажется, создается, у меня есть несколько файлов, в том числе:
_0.cfs
optimization.lock.file
read-lock-processing.lock.file
read.lock.file
segments_2
segments.gen
write.lock.file
вот код php, который у меня есть внутри контроллера
$index = \Zend_Search_Lucene::create(__DIR__.'/../../../../data/index');
$doc = new \Zend_Search_Lucene_Document();
$doc->addField(\Zend_Search_Lucene_Field::unIndexed('title', 'Symfony2') );
$doc->addField(\Zend_Search_Lucene_Field::text('contents', 'cat dog') );
$index->addDocument($doc);
$index = \Zend_Search_Lucene::open(__DIR__.'/../../../../data/index');
$term = new \Zend_Search_Lucene_Index_Term("dog");
$query = new \Zend_Search_Lucene_Search_Query_Term($term);
$results = $index->find($query);
try {
$results = $index->find($query);
}
catch (\Zend_Search_Lucene_Exception $ex) {
$results = array();
var_dump($ex);
}
foreach ( $results as $result ) {
echo $result->score, ' :: ', $result->title, "n";
}
var_dump($results);
exit;
Когда я запускаю скрипт, индексфайлы создаются, но возвращается только пустой массив, который распечатывается с последним значением var_dump как
array(0) { }
Во-первых, кто-нибудь знает, как я могу проверить правильность записи индекса?Во-вторых, кто-нибудь знает, почему мой запрос не возвращает никаких результатов?Кто-нибудь успешно реализовал Zend_Search_Lucene с Symfony2?Я пробовал комплекты Lidaa Search и EWZ, но ни один из них не работает.
Я работал весь день вчера, пытаясь решить эту проблему без радости, поэтому любая помощь будет очень признательна.
Хорошо, теперь мне удалось записать в индексный файл кодировку как utf-8, подобную этой
$doc->addField(\Zend_Search_Lucene_Field::text('contents', 'dog', 'utf-8') );
Однако я до сих пор не могу получить никаких результатов.Я думаю, что это может иметь какое-то отношение к настройкам локали, но я явно настроил это так:
setlocale(LC_ALL, 'en_UK.utf-8');
ini_set('intl.default_locale', 'en-UK');
Также, если я попытаюсь проанализировать строку запроса как utf-8, сценарий зависает и timeout
$queryStr = $_GET['query'];
$query = \Zend_Search_Lucene_Search_QueryParser::parse($queryStr, 'utf-8');
Кто-нибудь знает, почему это не работает на моем Mac?