Solr嵌套文档索引

时间:2017-10-09 10:55:10

标签: solr solrj

我想索引嵌套文档。我有一个ProductBean类,它有3个字符串类型字段和一个Object类型的List。

@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": [
      "com.aiq.solr.poc.Car@25618e91",
      "com.aiq.solr.poc.Car@7a92922"
    ],
    "_version_": 1580777018015875000
  }
]

对此的任何帮助都非常感谢。我正在使用Solr 4.10.3

1 个答案:

答案 0 :(得分: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以防止这种肮脏的黑客攻击。