1

我想将 zend 搜索集成到原生 PHP 项目中。我收到各种包含错误。

我做了一些研究,似乎在zf2之前写了很多关于它的旧文章。使用 zf1 它曾经是直截了当的。包括 lucene.php 就是这样。

然而,自从 zf2 发布以来,搜索组件不再是 zf2 框架的一部分,并且可以单独下载。当我包含 Lucene.php 时,脚本星星抱怨缺少类。(包括问题)

我应该包含所有文件还是应该使用某种自动加载器?

4

2 回答 2

3

您可以使用 Composer 安装单个 ZF2 包,这将为您处理任何自动加载和依赖关系。

https://github.com/zendframework/ZendSearch

你可以看到它也需要

zendframework/zend-stdlib

下载存储库,然后使用 composer 安装,这也会为您获取依赖项,并设置自动加载。

php composer.phar install
于 2013-05-21T09:05:12.847 回答
2

首先确保您已安装以下内容:

  • curl(确保您已将 curl 添加到路径环境变量)
  • 作曲家

确保在命令行使用的 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();

于 2013-05-21T12:28:24.073 回答