簡體   English   中英

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

[英]How to index MongoDB multivalued field into Solr 5.3.0

我有像這樣的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搜索中執行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

我假設您使用的是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指令解決此問題。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM