我正在使用嵌套文档从多个核心转移到单个核心。(因为来自多个核心的匹配/评分是有限的) 为了实现这一点,我试图使用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”了......