【发布时间】:2011-03-03 11:43:33
【问题描述】:
假设我想使用 Solr Lucene 索引我的商店。
我有多种类型的实体:产品、产品评论、文章
如何让我的 Lucene 索引这些类型,但每种类型都有不同的架构?
【问题讨论】:
标签: php lucene solr search-engine
假设我想使用 Solr Lucene 索引我的商店。
我有多种类型的实体:产品、产品评论、文章
如何让我的 Lucene 索引这些类型,但每种类型都有不同的架构?
【问题讨论】:
标签: php lucene solr search-engine
我建议您创建索引时所有实体都或多或少具有相同的基本字段:title, content, url, uuid, entity_type, entity_sourcename 等。如果您的每个实体都有一组唯一的对应索引字段,您将很难构建查询以同时搜索所有实体,您的结果视图可能会变得一团糟。如果您需要特定实体的某些特定字段,则添加它并根据其 entity_type 对该实体执行特殊逻辑。
我是根据经验说的:我们正在管理一个包含 10 多个不同实体的索引,这种方法很有效。
附:其他一些简单的建议。
【讨论】:
多核是一种谨慎使用的方法。使用像您这样的简单架构,这是一种更好的方式来做 buru 建议。 这意味着要查找不同实体之间的公共字段,然后查找仅由其中一个或多个实体使用的字段。然后,您可以添加一个字段“type”或“type_id”,这将说明您的实体是否是产品、产品评论...
这样做将使您拥有唯一索引,并快速处理查询。
【讨论】:
您可能希望有 3 个索引,分别称为 Products、ProductReviews 和 Articles。每个索引都可以有自己的架构。 Lucene 和关系数据库方法之间的区别在于,数据库中的一行,大致 转换为 Lucene 中的文档。注意:每个文档都可以有自己的架构(这是与关系数据库的另一个区别)。
【讨论】:
使用 Lucene/Solr,每个文档不需要为每个字段设置一个值。在同一架构中,您可以为实体 A 设置一组字段,为实体 B 设置另一组字段,并根据实体填充适当的字段。
使用 Solr,您还可以选择多核。每个核心都有自己的架构。您可以为每个实体定义一个核心。
【讨论】: