假设我想使用Solr Lucene索引我的商店。
我有很多类型的实体:产品,产品评论,文章
如何让我的Lucene为这些类型编制索引,但每种类型都有不同的Schema?
答案 0 :(得分:5)
我建议您创建索引,使所有实体具有或多或少相同的基本字段:title, content, url, uuid, entity_type, entity_sourcename
等。如果您的每个实体都有一组唯一的相应索引字段,那么您将拥有很难构建查询以同时搜索所有实体,并且您的结果视图可能会变得非常混乱。如果您需要某个特定实体的某些特定字段,请根据其entity_type添加该特定字段并为该实体执行特殊逻辑。
我是根据经验说的:我们正在管理一个包含10多个不同实体的索引,这种方法就像魅力一样。
P.S。其他一些简单的建议。
答案 1 :(得分:2)
多核是一种谨慎使用的方法。使用像你这样的简单模式,这是一个更好的方式来做buru命令。 这意味着要查找不同实体之间的公共字段,然后查找仅由on或其中几个使用的字段。然后,您可以添加一个字段“type”或“type_id”,它会说明您的实体是产品还是产品评论......
这样做可以使您拥有唯一索引,并快速处理查询。
答案 2 :(得分:1)
使用Lucene / Solr,每个文档不需要为每个字段设置值。在同一模式中,您可以为实体A提供一组字段,为实体B提供另一组字段,并根据实体填充相应的字段。
使用Solr,您还可以选择多核。每个核心都有自己的架构。您可以为每个实体定义核心。
答案 3 :(得分:1)
您可能希望拥有3个名为Products,ProductReviews和Articles的索引。每个索引都可以有自己的架构。 Lucene和关系数据库方法之间的区别在于db中的行,粗略转换为Lucene中的文档。注意:每个文档都可以有自己的模式(这是与关系数据库的另一个区别)。