Zend:索引生成和Zend_Search_Lucene的优缺点

时间:2009-12-10 18:06:06

标签: zend-framework zend-search-lucene zend-lucene

我之前从未遇到像Zend Search Lucene这样的app / class,因为我一直在查询我的数据库。

  

Zend_Search_Lucene使用   作为原子对象的文件   索引。一份文件分为   命名字段,字段包含内容   可以搜索。

     

文件由   Zend_Search_Lucene_Document类,和   这个类的这个对象包含   Zend_Search_Lucene_Field的实例   代表的字段   文档。

     

重要的是要注意任何   信息可以添加到索引中。   特定于应用程序的信息或   元数据可以存储在文档中   字段,后来用。检索   搜索期间的文件。

所以这基本上说我可以将它应用于包括数据库在内的任何东西,这里的关键是制作搜索索引。

我想要掌握的是我应该在哪里将索引存储在我的应用程序中,例如我们将手机存储在数据库,制造商,模型中 - 我应该如何对索引进行分类?

如果我用地址制作用户索引,我显然不希望它们公开可见,我只是对它如何一起工作感到困惑,如果有已知的缺点,我应该知道任何问题在使用它时知道。

1 个答案:

答案 0 :(得分:3)

Lucene索引存储在数据库外部。我将它存储在“数据”目录中,作为控制器,模型和视图的姊妹。但你可以把它存放在任何地方;您只需在打开索引进行查询时指定路径。

它基本上是存储在数据库中的文档的冗余副本,您必须自己保持同步。这是缺点之一:您必须根据针对数据库的查询结果编写代码来填充Lucene索引。在向数据库添加数据时,您还必须更新Lucene索引。

使用外部全文索引解决方案的一个优点是可以减少RDBMS上的工作负载。要查找文档,请使用Lucene API执行搜索。结果应该包含一个包含主键值的字段(作为文档的一部分,但不需要对其进行FT搜索分析)。当您执行Lucene搜索时,您会返回此字段,因此您可以在数据库中查找相应的行。

这有助于回答您的问题吗?

我最近为MySQL大学做了一个比较全文搜索解决方案的演讲: http://forge.mysql.com/wiki/Practical_Full-Text_Search_in_MySQL

我还会在http://www.SlideShare.net/billkarwin发布我的幻灯片。