2017-10-09 152 views
0

我想索引嵌套的文檔。我有一個類ProductBean類,它有3個字符串類型字段和一個類型對象列表。Solr嵌套文檔索引

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

@Field 
List<Car> cars; 

Class Car如下。

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

下面是用於索引的代碼。

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(); 

該文檔已編入索引,但數據不正確。我得到的數據如下。

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

對此的任何幫助都非常感謝。我正在使用Solr 4.10.3

回答

0

不幸的是,Solr 5.1增加了對child=true的簡單支持。

如果您在使用舊Solr的(在你的情況4.10.x),您需要使用一些解決辦法,這在簡單來說應該是這樣的

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

我寧願不會複製任何代碼在這裏,而是建議您儘快遷移到Solr 5.x,以防止這種骯髒的黑客攻擊。

+0

我正在使用Solr 4.10.3,我猜不支持@Field(child = true)。另外我不使用Spring Solr。 –

+0

好吧,明白了。它真的會在稍後介紹 – Mysterion