Как использовать ZendSearch с CodeIgniter 2.1.3?

Я знаю, что ZendSearch в Zend Framework 2 похож на Zend Search Lucene в Zend Framework 1.12. Я пытался использовать Zend Search Lucene с CodeIgniter 2.1.3. Процесс индексации и поиска работает хорошо, но все еще выдает некоторые ошибки (предупреждения), например:

Warning: include(application/errors/error_php.php) [function.include]: failed to open stream: No such file or directory in C:\path\to\system\core\Exceptions.php on line 182
Warning: include() [function.include]: Failed opening 'application/errors/error_php.php' for inclusion (include_path='.;C:\php5\pear;application/libraries') in C:\path\to\system\core\Exceptions.php on line 182
Fatal error: require_once() [function.require]: Failed opening required 'Zend/Search/Lucene/Storage/File/Filesystem.php' (include_path='.;C:\php5\pear;application/libraries') in C:\path\to\application\libraries\Zend\Search\Lucene\Storage\Directory\Filesystem.php on line 349

Эти ошибки появляются после перехода по этой статье при попытке использовать библиотеку Zend Search Lucene в моем приложении codeigniter. Я сомневаюсь, что статья и Zend Search Lucene все еще действительны при использовании с codeigniter 2.1.3, и теперь я хочу использовать ZendSearch.

Итак, как использовать ZendSearch с CodeIgniter 2.1.3?


person Ifan Iqbal    schedule 07.07.2013    source источник
comment
Не могли бы вы опубликовать суть своего кода, чтобы он мог сильно помочь проанализировать, в чем проблема.   -  person VJ Sai    schedule 30.08.2013
comment
Мой код совпадает со статьей, указанной выше. Я никогда раньше не использовал Zend. Раньше я использовал КИ. Есть ли какая-либо конфигурация, которую я пропустил?   -  person Ifan Iqbal    schedule 06.09.2013


Ответы (1)


У вас есть библиотека Zend Search Lucene для Codeigniter.

Для поиска Lucene сначала необходимо создать индекс, а затем создать индексный документ, в котором выполняется фактическая операция поиска.

$index = Zend_Search_Lucene::create($CI->base_index_path . '/index_folder');

$doc = new Zend_Search_Lucene_Document(); 

а затем добавьте такие поля из ваших таблиц БД:

$doc->addField(Zend_Search_Lucene_Field::Keyword('id', $object->id));

$index->addDocument($doc);

И, наконец, используйте, как показано ниже, $q — это параметр поиска, который вы хотите искать в этом индексе.

$data['query'] = $q;
$query = "name:\"" . $q . "\" or full_desc:\"" . $q . "\"";
$query_result = $index->find($query);
person Naresh Ramoliya    schedule 05.09.2013