【问题标题】:Multiple or single index in Lucene?Lucene 中的多个或单个索引?
【发布时间】:2010-04-30 17:54:39
【问题描述】:

我必须为应该一起搜索的不同类型的数据(文本文档、论坛消息、用户个人资料等)编制索引(即,一次搜索将返回不同类型数据的结果)。

  • 拥有多个索引的优缺点是什么,每种数据类型一个索引?

  • 以及为各种数据使用单一索引的优缺点?

谢谢。

【问题讨论】:

    标签: lucene


    【解决方案1】:

    如果您想一次搜索所有类型的文档,最好保留所有 类型到一个索引。在索引中,您可以定义更多要标记化或矢量化的字段类型。 向每个 IndexSearcher 引入包含索引的目录需要一些时间。

    如果您想单独搜索术语,最好将每种类型索引到一个索引。 单索引比多索引更具结构性。

    另一方面,我们可以用多个索引来平衡我们的负载。

    【讨论】:

      【解决方案2】:

      不一定要回答您的直接问题,但是... ;)

      我会使用一个索引,为该类型添加一个关键字(索引,存储)字段,它可以让您在需要时进行过滤,并告诉您收到的结果之间的区别。

      (也许在您的问题中......使用单独的索引将允许每个语料库拥有自己的相关性分数,不知道一个语料库中过度重复的术语是否会影响其他文档的相关性?)

      【讨论】:

        【解决方案3】:

        您应该从逻辑上思考每个数据集包含的内容,并按主题或其他标准(例如地理、业务部门等)设计索引。作为一般规则,您的索引架构类似于您的数据库方式(例如,即使技术上可行,您也可能不会将会计与人事数据库结合起来)。

        正如@llama 所指出的,创建单个 uber-index 会影响相关性分数、安全/访问问题等,并引发一系列全新的问题。

        总结:根据您的业务需求考虑逻辑分区结构。如果没有进一步的背景,将很难解释。

        【讨论】:

          【解决方案4】:

          同意每种数据都应该有自己的索引。以便可以相应地设置所有索引选项 - 例如字段分析器,为术语向量和类似字段存储的内容。并且还能够在针对不同类型的数据重新打开/提交 IndexReaders/Writers 时使用不同的动态。

          一个明显的缺点是需要处理多个索引而不是一个。为了使它更容易,并且因为我总是使用多个索引,创建了一个小库来处理它:Multi Index Lucene Manager

          【讨论】:

            猜你喜欢
            • 2017-08-27
            • 1970-01-01
            • 2010-09-20
            • 1970-01-01
            • 1970-01-01
            • 2011-12-30
            • 1970-01-01
            • 2013-11-05
            • 1970-01-01
            相关资源
            最近更新 更多