[英]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.