如何将MongoDB多值字段索引到Solr 5.3.0中

时间:2017-08-16 09:39:53

标签: solr

我有像这样的mongodb文件,

 { 
    "_id" : ObjectId("5993d55cebb06d20f08521ad"), 
    "LoginInfoId" : NumberInt(410), 
    "EstablishmentName" : "xyz", 
    "ShopCategory" : "Crockery", 
    "likes" : NumberInt(21), 
    "ShopCats" : [ 1,5,3 ]
    }

    { 
    "_id" : ObjectId("5993d55cebb06d20f088871ad"), 
    "LoginInfoId" : NumberInt(411), 
    "EstablishmentName" : "abc", 
    "ShopCategory" : "Crockery", 
    "likes" : NumberInt(51), 
    "ShopCats" : [ 1,8,9 ]
    }

我需要将字段ShopCats索引到solr字段中作为逗号分隔值 像这样,

  

“ShopCats”:[1,2,3]

我需要使用这些值在solr search

中执行 filterquery

我尝试了一些架构字段定义

<field name="ShopCats" type="commaDelimited" indexed="true" stored="true" multiValued="true" />



<fieldType name="commaDelimited" class="solr.TextField">
      <analyzer>
        <tokenizer class="solr.PatternTokenizerFactory" pattern=",\s*" />
      </analyzer>
     </fieldType>

MongoDb文档字段ShopCats仍未编入solr索引。

1 个答案:

答案 0 :(得分:0)

我假设您使用Mongo连接器,如果是,则Mongo连接器展开阵列,以便下面

 { 
"_id" : ObjectId("5993d55cebb06d20f08521ad"), 
"LoginInfoId" : NumberInt(410), 
"EstablishmentName" : "xyz", 
"ShopCategory" : "Crockery", 
"likes" : NumberInt(21), 
"ShopCats" : [ 1,5,3 ]
}

在编制索引之前将更改为以下

{ 
"_id" : ObjectId("5993d55cebb06d20f08521ad"), 
"LoginInfoId" : NumberInt(410), 
"EstablishmentName" : "xyz", 
"ShopCategory" : "Crockery", 
"likes" : NumberInt(21), 
"ShopCats.0" : 1,
"ShopCats.1" : 5,
"ShopCats.2" : 3
}

只要有子文档,就会发生这种情况,并且Solr没有“子文档”支持/ 您可以使用schema.xml中的copyField指令来解决这个问题。

我希望这会有所帮助。