2017-10-09 132 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