使用Zend_Search_Lucene进行Excel文档扫描
Zend_Search_Lucene提供了一些强大的文档扫描功能,并且有几种不同的格式对于搜索引擎进行索引很有用。
要允许使用Zend_Search_Lucene索引和搜索Excel文档,您需要使用Zend_Search_Lucene_Document_Xlsx类。但是,要使用此类,您必须在PHP中安装Zip模块。对于Windows用户,这意味着编辑您的php.ini文件并取消注释以下行:
extension=php_zip.dll
对于Linux用户,您将需要使用--enable-zipconfigure选项重新编译PHP。
以常规方式创建和/或打开索引,您可以使用以下代码为Excel文档建立索引。
$filename = 'C:\Book1.xlsx'; $doc = Zend_Search_Lucene_Document_Xlsx::loadXlsxFile($filename); $index->addDocument($doc);
现在,您可以通过以下方式设置查询并搜索文档,尽管通常希望输入字符串是某种用户输入。
$queryStr = 'wibble'; $userQuery = Zend_Search_Lucene_Search_QueryParser::parse($queryStr); $query = new Zend_Search_Lucene_Search_Query_Boolean(); $query->addSubquery($userQuery, true); $hits = $index->find($query); foreach ( $hits as $hit ) { echo $hit->score.'
'; echo $hit->filename.'
'; }
分数总是与命中对象一起返回。其他可显示的参数是文件名,标题,主题,创建者,关键字,描述,lastModifiedBy,修订,修改,创建。但是,其中一些取决于文档的内容。可以向Excel文档中添加关键字和主题,因此,如果不存在关键字和主题,则在显示该参数之前,您需要检查该参数是否存在。下面的代码在尝试打印出关键字参数之前查找关键字参数的存在。
if ( isset($hit->keywords) ) { echo $hit->keywords.'
'; }
默认情况下,此函数为文档元数据建立索引,并将标记化标记并将标记存储为索引。该loadXlsxFile()函数具有第二个可选参数,默认情况下将其设置为false。如果将其设置为true,则Excel文档的内容将包含在索引中。然后,您可以使用以下代码打印出文档的内容。
echo$hit->body.'
';
请记住,此输出将不包含任何行或列信息,因此看起来像是数据转储。