3

我知道 Zend Framework 2 中的 ZendSearch 与 Zend Framework 1.12 中的 Zend Search Lucene 类似。我尝试将 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

当我尝试在我的 codeigniter 应用程序中使用 Zend Search Lucene 库时,在我按照这篇文章之后出现了该错误。我怀疑文章和 Zend Search Lucene 在与 codeigniter 2.1.3 一起使用时仍然有效,现在我想使用 ZendSearch。

那么,如何在 CodeIgniter 2.1.3 中使用 ZendSearch?

4

1 回答 1

4

您有用于 Codeigniter 的 Zend Search Lucene 库。

对于 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);
于 2013-09-05T11:28:50.600 回答