Zend Lucene和PDF文档第5部分:结论

如果您一直关注最后四篇文章,则现在应该有一个应用程序,该应用程序将允许您查看和编辑PDF元数据,提取文档内容以进行搜索索引,并允许用户搜索该索引。

最后要做的一件事是弄清更改任何PDF元数据时发生的情况。目前,该应用程序将允许我们根据需要更改元数据,但是这些更改将不会复制到我们的搜索索引中。为此,我们必须完全重新索引所有内容。显然,这是错误的处理方式,解决方案非常简单。我们需要做的就是建立文件controllers / PdfController.php并更改editmetaAction()方法,以便在保存PDF元数据时更新搜索索引。editmetaAction()在重定向之前,将以下代码添加到方法中。

// 添加/更新索引。
$config = Zend_Registry::get('config');
$appLucene = App_Search_Lucene::open($config->luceneIndex);
$index = App_Search_Lucene_Index_Pdfs::index($pdfPath, $appLucene);

这意味着更改任何PDF的元数据时,该文件的搜索索引也将更改。

将文档添加到Lucene索引将导致索引分成更小的片段,这将导致以后的搜索和索引速度变慢。之所以会发生这种情况,是因为将新文档添加到索引后,会创建一个新的段。为了解决此问题,Lucene附带了一种名为的方法optimize(),该方法会将所有这些分段的索引文件缩减为一个分段。运行此方法非常简单,只需打开Lucene索引并调用该optimize()方法即可。

$config = Zend_Registry::get('config');
$index = App_Search_Lucene::open($config->luceneIndex);
 
// 优化索引。
$index->optimize();

该方法可以随时运行,但是因为它占用大量资源,所以最好不要在每次更新索引时都运行它。什么时候运行取决于您更新索引的频率。如果您仅每周更新一次搜索索引,则每周运行一次。如果您每隔几分钟更新一次索引,则可能应该optimize()在一天中的指定时间段运行,或者在网站流量较低时运行。

要获取该项目的源代码,请访问github上的PDFSearch存储库并从那里下载它。为了减小下载量,我从库目录中删除了Zend Framework。要启动并运行项目,只需从framework.zend.com下载框架,然后将Zend目录放入库目录中。您还需要打开文件application / configs / application.ini并将引用更改为您的Lucene和文件目录位置。

我已经使用github使我更容易更新项目,但也允许其他用户将其分叉到自己的项目中并继续工作。请记住,该应用程序仅涵盖了对PDF元数据进行编辑,搜索以及建立索引和运行所需的基本内容。这绝不是一个完整的应用程序,因此不应原样使用。

如果您想了解有关Zend_Search_Lucene的更多信息,那么我建议您购买Zend Framework In Action。这是对该主题的出色介绍,也是对Zend Framework的出色介绍。我在本项目中使用的某些代码是基于本书中的示例的。

当然,您也可以在Zend Framework文档网站上查看有关Zend_Search_Lucene的出色文档。

  • Zend Lucene和PDF文档第1部分:PDF元数据

  • Zend Lucene和PDF文档第2部分:PDF数据提取

  • Zend Lucene和PDF文档第3部分:为文档建立索引

  • Zend Lucene和PDF文档第4部分:搜索

  • Zend Lucene和PDF文档第5部分:结论