2017-08-16 3 views
0

Ich habe mongodb Dokumente wie diese ,,Wie Index MongoDB mehrwertig Feld in Solr 5.3.0

{ 
    "_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 ] 
    } 

ich indizieren müssen das Feld ShopCats in ein solr Feld als Comma Separated Value wie diese,

"ShopCats": [1,2,3]

ich brauche diese Werte zu verwenden filterquery zu tun in solr Suche

Ich habe mit einigen Schema Felddefinitionen versucht

<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> 

Immer noch das MongoDB Dokumentfeld ShopCats nicht in solr indiziert.

Antwort

0

Ich gehe davon aus, dass Sie ein Mongo-Anschluss verwenden, wenn ja, dann Mongo Anschlüsse Arrays so untenstehenden

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

vor Indizierung unten wird geändert abwickelt

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

Dies geschieht immer dann, wenn es ein Unterdokument, und Solr hat nicht die Unterstützung für "Unterdokumente"/ Sie können dies möglicherweise mit der Anweisung copyField in Ihrer schema.xml umgehen.

Ich hoffe, das hilft.

+0

ja ,,, iam mit Mongo-Anschluss. Ich habe ungefähr 40 ShopCats Werte, wenn ich copfield verwende, dann sollte ich alle 40 ShopCats deklarieren und dann in ein einzelnes Feld kopieren. Ist das eine gute Praxis? – vampo458

+0

@ vampo458 Ich würde die Best Practice nicht kommentieren. Aber wenn Sie mit Java eine Verbindung zu Mongo herstellen und diese Felder extrahieren und eine SolrJ zum Indexieren verwenden, können Sie diese Situation überwinden. Akzeptieren Sie auch eine Antwort, wenn Sie es hilfreich finden – Jeyaprakash

+0

Ich arbeite in PHP, Mongodb und Solr, kann ich das gleiche mit PHP solr-Klasse tun? – vampo458

Verwandte Themen