【问题标题】:Solr nested document indexingSolr 嵌套文档索引
【发布时间】:2017-10-09 10:55:09
【问题描述】:

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

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

@Field
List<Car> cars;

类车如下。

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

【问题讨论】:

    标签: solr solrj


    【解决方案1】:

    不幸的是,child=true 的简单支持是从 Solr 5.1 添加的。

    如果您使用旧的 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 以防止这种肮脏的黑客攻击。

    【讨论】:

    • 我使用的是 Solr 4.10.3,我猜它不支持 @Field(child=true)。我也没有使用 Spring Solr。
    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2011-05-27
    • 2019-02-21
    相关资源
    最近更新 更多