我想将 zend 搜索集成到原生 PHP 项目中。我收到各种包含错误。
我做了一些研究,似乎在zf2之前写了很多关于它的旧文章。使用 zf1 它曾经是直截了当的。包括 lucene.php 就是这样。
然而,自从 zf2 发布以来,搜索组件不再是 zf2 框架的一部分,并且可以单独下载。当我包含 Lucene.php 时,脚本星星抱怨缺少类。(包括问题)
我应该包含所有文件还是应该使用某种自动加载器?
我想将 zend 搜索集成到原生 PHP 项目中。我收到各种包含错误。
我做了一些研究,似乎在zf2之前写了很多关于它的旧文章。使用 zf1 它曾经是直截了当的。包括 lucene.php 就是这样。
然而,自从 zf2 发布以来,搜索组件不再是 zf2 框架的一部分,并且可以单独下载。当我包含 Lucene.php 时,脚本星星抱怨缺少类。(包括问题)
我应该包含所有文件还是应该使用某种自动加载器?
您可以使用 Composer 安装单个 ZF2 包,这将为您处理任何自动加载和依赖关系。
https://github.com/zendframework/ZendSearch
你可以看到它也需要
zendframework/zend-stdlib
下载存储库,然后使用 composer 安装,这也会为您获取依赖项,并设置自动加载。
php composer.phar install
首先确保您已安装以下内容:
确保在命令行使用的 php.ini 中启用了 openssl。(对于那些在 Windows 上使用 wamp 的人,有两个 php ini 文件。一个用于 apache,另一个用于命令行。)
启动命令行并使用 CD 命令进入您解压缩的目录 Zend 搜索并运行以下两个命令
curl -sh**ps://getcomposer.org/installer | php
php composer.phar 安装
在同一目录中创建一个 php 文件并包含 .vendor/autoload.php
创建一个创建自动加载函数来加载不同的库。目前我写了一些简单的东西,如下所示:
函数自动加载($classname){
$path = __DIR。DS 。“图书馆” .DS 。$类名。".php";if(file_exists($path)) { require_once($path);
} }
如果您知道它们的命名空间,这应该加载不同的类。这是基本的自动加载器,不应使用。
我一直在使用以下指南,但是它已经过时了,因为类的名称已被修改为如下所示:
$indexPath = 'C:\wamp\www\storage'; $index = ZendSearch\Lucene\Lucene::create($indexPath);
$doc = 新 ZendSearch\Lucene\Document();
$doc->addField(ZendSearch\Lucene\Document\Field::UnIndexed('url', $docUrl)); $doc->addField(ZendSearch\Lucene\Document\Field::UnIndexed('created', $docCreated)); $doc->addField(ZendSearch\Lucene\Document\Field::UnIndexed('teaser', $docTeaser)); $doc->addField(ZendSearch\Lucene\Document\Field::Text('title', $docTitle)); $doc->addField(ZendSearch\Lucene\Document\Field::Text('author', $docAuthor)); $doc->addField(ZendSearch\Lucene\Document\Field::UnStored('contents', $docBody));
$index->addDocument($doc); $index->commit();