2017-10-09 3 views
0

Ich möchte verschachtelten Dokument indizieren. Ich habe eine Klasse ProductBean Klasse, die 3 String-Typ-Felder und eine Liste des Typs Object hat.Solr Nested Document Indizierung

@Field 
String id; 
@Field 
String tgtKey_; 
@Field 
String borrowerId; 

@Field 
List<Car> cars; 

Klasse Auto ist wie folgt.

public class Car { 
    @Field 
    String model; 
    @Field 
    String cc; 

    public String getModel() { 
     return model; 
    } 

    public void setModel(String model) { 
     this.model = model; 
    } 
    public String getCc() { 
     return cc; 
    } 
    public void setCc(String cc) { 
     this.cc = cc; 
    } 
} 

Unten ist der Code zum Indexieren.

ProductBean bean = new ProductBean("123", "xyz", "23"); 
    List<Car> cars = new ArrayList<Car>(); 
    Car c = new Car(); 
    c.setModel("Pulsar 150"); 
    c.setCc("150"); 
    Car c1 = new Car(); 
    c1.setModel("Desert Strom"); 
    c1.setCc("500"); 
    cars.add(c); 
    cars.add(c1); 
    bean.setCars(cars); 
    server.addBean(bean); 
    server.commit(); 

Das Dokument ist indiziert, aber die Daten stimmen nicht. Ich bekomme Daten wie unten.

"docs": [ 
    { 
    "id": "123", 
    "tgtKey_": "xyz", 
    "borrowerId": "23", 
    "cars": [ 
     "[email protected]", 
     "[email protected]" 
    ], 
    "_version_": 1580777018015875000 
    } 
] 

Jede Hilfe zu diesem wird sehr geschätzt. Ich bin mit Solr 4.10.3

Antwort

0

Leider ist die einfache Unterstützung von child=true wurde von Solr hinzugefügt 5.1.

Wenn Sie alte Solr verwenden (in Ihrem Fall 4.10.x), müssen Sie etwas Abhilfe verwenden, die in einfachen Worten sollte

wie diese aussehen

https://issues.apache.org/jira/browse/SOLR-1945?focusedCommentId=13607635&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13607635

Ich würde lieber nicht kopieren jede Code hier, sondern wird Ihnen empfehlen, so schnell wie möglich zu Solr 5.x zu migrieren, um diesen schmutzigen Hack zu verhindern.

+0

Ich bin mit Solr 4.10.3, die ich denke, @Field (Kind = true) nicht unterstützt. Ich benutze auch nicht Spring Solr. –

+0

Okay, hab es. es wird später wirklich eingeführt – Mysterion

Verwandte Themen