solrj索引具有多个级别的子文档

时间:2017-04-03 15:40:15

标签: solr solrj

我正在使用嵌套文档从多个核心转移到单个核心。(因为来自多个核心的匹配/评分是有限的) 为了实现这一点,我试图使用solrJ索引嵌套结构。

我已经测试了以下代码,但是我收到错误“BookDetail不能有多个具有child = true的字段” 我怎么能避免这个?这是solrj限制吗?

索引完成如下: - Solr和solrj版本5.3.1

HttpSolrClient mytestcore=new HttpSolrClient("..."); 
mytestcore.add(dob.toSolrInputDocument(new Book());//should have some initialization

结构如下(但删除了大多数未使用的字段)。

public class Book implements Serializable {

    @Field
    private String id;
    @Field
    private String type;
    @Field(child = true)
    private List<BookDetail> details;
    ...
}

public class BookDetail implements Serializable {

    @Field
    private String id;
    @Field
    private String type;
    @Field(child = true)
    private List<BookMetaData> bookMetaData;
    @Field(child = true)
    private List<BookContent> pages;
    ...
}

public class BookMetaData implements Serializable {

    @Field
    private String id;
    @Field
    private String type;
    ...
}

public class BookContent implements Serializable {

    @Field
    private String id;
    @Field
    private String type;
    @Field
    private String content;
    ...
}

修改

目前通过为每个文档类型制作单独的SolrInputDocuments并使用addChildDocument添加它们来解决它(如在stackoverflow上的其他答案中所见)但是这个解决方案不再使用注释“child = true”了......

0 个答案:

没有答案