使用Solr Lucene索引不同类型的实体/对象

Yos*_*Yos 9 php lucene solr search-engine

假设我想使用Solr Lucene为我的商店编制索引.

我有很多类型的实体:产品,产品评论,文章

如何让我的Lucene为这些类型编制索引,但每种类型都有不同的Schema?

bur*_*uru 5

我建议您创建索引,使所有实体具有或多或少相同的基本字段:title, content, url, uuid, entity_type, entity_sourcename等等.如果您的每个实体都有一组唯一的相应索引字段,您将很难构建查询以搜索所有实体同时,您的结果视图可能会变得非常混乱.如果您需要特定实体的某些特定字段,则添加它并根据其entity_type为该实体执行特殊逻辑.

我是根据经验说的:我们正在管理一个包含10多个不同实体的索引,这种方法就像魅力一样.

PS一些其他简单的建议.

  1. 确保您的Lucene文档包含构建结果的所有必要数据并将其显示给用户(这样您就不需要转到数据库来构造结果).Lucene查询通常比数据库查询快得多.
  2. 如果您绝对需要使用数据库来构建结果集(例如,应用权限),请首先使用Lucene查询来缩小结果,然后使用数据库查询来过滤它们.
  3. 如果需要,请不要害怕在某些文档中添加自定义字段:将Lucene文档视为键值数据存储区.


Mik*_*kos 1

您可能需要 3 个索引,分别称为 Products、ProductReviews 和 Articles。每个索引可以有自己的模式。Lucene 和关系数据库方法之间的区别在于,数据库中的一行大致转换为 Lucene 中的文档。注意:每个文档可以有自己的模式(这是与关系数据库的另一个区别)。