代码之家  ›  专栏  ›  技术社区  ›  Akeem

使用Lucene搜索一次搜索多个索引

  •  3
  • Akeem  · 技术社区  · 17 年前

    我正在使用Zend_Search_Lucene来实现站点搜索。我为不同的数据类型创建了单独的索引(例如,一个用于用户,一个用于帖子等)。结果同样按数据类型划分,但有一个“全部”选项,该选项应显示不同结果类型的组合。可以一次搜索不同的索引吗?或者我必须在all索引中索引所有内容吗?

    最新消息: readme

    3 回复  |  直到 17 年前
        1
  •  7
  •   Akeem    17 年前

    因此,经过一些研究后,您必须使用Zend_Search_Lucene_Interface_Multisearch。在撰写本文时,我在文档中没有看到任何关于它的提及,但是如果您查看ZF 1.8中的实际类,它就不会使用了

    $index = new Zend_Search_Lucene_Interface_MultiSearcher();
    $index->addIndex(Zend_Search_Lucene::open('search/index1'));
    $index->addIndex(Zend_Search_Lucene::open('search/index2'));
    $index->find('someSearchQuery');
    

    注意,它不遵循PEAR语法,因此不会使用Zend_Loader::loadClass

        2
  •  3
  •   Frank Farmer    17 年前

    这正是我处理搜索的方式 huddler.com

    当我们把一个大型站点放到我们的平台上时,我们发现Zend Lucene无法扩展。我们的索引大约达到了1.0GB,简单的查询耗时长达15秒。有些查询需要一分钟或更长时间。从头开始建立索引大约需要20个小时。

    我换成了Solr;Solr不仅在索引过程中执行速度快50倍,在许多查询中执行速度快1000倍(大多数查询在<5毫秒内完成,所有查询在<100毫秒内完成),它的功能更强大。此外,我们能够在30分钟内从头开始重建100000多个文档索引(低于20小时)。

    现在,所有内容都在一个Solr索引中,并带有一个“type”字段;我对每个搜索的索引运行多个查询,每个查询具有不同的“type:”过滤器查询,而对于“all”选项,一个查询没有“type:”。

    如果您计划将索引增加到100+MB,每分钟至少会收到一些搜索请求,或者您想提供任何类型的高级搜索功能,我强烈建议您放弃Zend_search_Lucene。

        3
  •  2
  •   A. Coady    17 年前

    我不知道它是如何与Zend集成的,但在Lucene中可以使用 MultiSearcher ,而不是通常的索引搜索器。

    推荐文章