我对弹簧数据SOLR和SOLR非常陌生,所以请原谅我一些愚蠢的菜鸟问题。
目前我正在创建一个spring-boot 1.4.1.RELEASE应用程序,spring-data solr 2.0.3.RELEASE和solr-solrj 5.5.3以及Java 8。
我能够将数据放入本地SOLR实例,但SOLR中的数据看起来并不像我预期的那样 - 也许我预计会出错?
我的数据如下:
public class Retailer{
/**
* The number of the retailer, unique identifier
*/
@Id
@Indexed
@Field
@NotBlank(message = ValidationConstants.ERROR_MISSING_SAP_RETAILER_NUMBER)
@Column(unique = true)
private String sapRetailerNumber; // NOSONAR
/**
* The company name of the retailer.
*/
@Field
@Indexed
@NotBlank(message = ValidationConstants.ERROR_VALIDATION_MISSING_NAME)
private String name; // NOSONAR
@Field(child=true, value="retailerContact")
@Indexed
@NotNull(message = ValidationConstants.ERROR_VALIDATION_MISSING_CONTACTINFO)
@Valid
private Contact contact;
@Field(child=true, value="retailerAddress")
@Indexed
@NotNull(message = ValidationConstants.ERROR_VALIDATION_MISSING_ADDRESS)
@Valid
private Address address;
}
班级联系方式:
public class Contact {
@Field
@Indexed
@NotBlank(message = ValidationConstants.ERROR_VALIDATION_MISSING_EMAIL)
@Email(message = ValidationConstants.ERROR_VALIDATION_INVALID_EMAIL, regexp = ValidationConstants.EXPRESSION_RFC5322_MAIL)
private String email; // NOSONAR
@Field
@Indexed
@NotBlank(message = ValidationConstants.ERROR_VALIDATION_MISSING_HOMEPAGE)
private String homepage; // NOSONAR
@Field
@Indexed
private String phone; // NOSONAR
@Field
@Indexed
private String fax; // NOSONAR
}
类地址类似于联系人。我期望在SOLR中拥有结构化数据,但联系人和地址对象是扁平化的。到目前为止,我发现有一个名为嵌套文档的功能支持结构化数据,我希望通过提供注释激活此功能
@Field(child=true, value="retailerContact")
但不幸的是,这并没有改变任何事情。
是否存在使用嵌套文档的弹簧数据SOLR示例?弹簧数据SOLR主页中链接的示例似乎没有使用此功能。
感谢任何提示,提前谢谢!
答案 0 :(得分:0)
默认MappingSolrConverter
尚不支持嵌套文档。但是,您可以切换到使用本机映射的SolrJConverter
。
@Bean
public SolrTemplate solrTemplate(SolrClient client) {
SolrTemplate template = new SolrTemplate(client);
template.setSolrConverter(new SolrJConverter());
return template;
}