我之前从未遇到像Zend Search Lucene这样的app / class,因为我一直在查询我的数据库。
Zend_Search_Lucene使用 作为原子对象的文件 索引。一份文件分为 命名字段,字段包含内容 可以搜索。
文件由 Zend_Search_Lucene_Document类,和 这个类的这个对象包含 Zend_Search_Lucene_Field的实例 代表的字段 文档。
重要的是要注意任何 信息可以添加到索引中。 特定于应用程序的信息或 元数据可以存储在文档中 字段,后来用。检索 搜索期间的文件。
所以这基本上说我可以将它应用于包括数据库在内的任何东西,这里的关键是制作搜索索引。
我想要掌握的是我应该在哪里将索引存储在我的应用程序中,例如我们将手机存储在数据库,制造商,模型中 - 我应该如何对索引进行分类?
如果我用地址制作用户索引,我显然不希望它们公开可见,我只是对它如何一起工作感到困惑,如果有已知的缺点,我应该知道任何问题在使用它时知道。
答案 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发布我的幻灯片。