2016-09-30 129 views
1

我對spring-data SOLR和SOLR很新,所以請原諒我一些愚蠢的新手問題。用spring-data solr嵌套文檔

目前我正在創造一個彈簧啓動1.4.1.RELEASE應用,彈簧數據的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中具有結構化數據,但Contact和Address對象是平坦的。據我發現有一個叫做嵌套文件功能,支持結構化數據,我希望通過給註釋

@Field(child=true, value="retailerContact") 

激活此功能,但遺憾的是這並沒有改變任何東西。

是否有某處使用嵌套文檔的spring-data SOLR示例?春季資料SOLR主頁中鏈接的示例似乎並未使用此功能。

任何提示表示感謝,提前謝謝!

回答

0

默認MappingSolrConverter還不支持嵌套文檔。但是,您可以切換到使用本地映射的SolrJConverter

@Bean 
public SolrTemplate solrTemplate(SolrClient client) { 

    SolrTemplate template = new SolrTemplate(client); 
    template.setSolrConverter(new SolrJConverter()); 
    return template; 
} 
+0

不幸的是,SolrJConverter沒有把戲。我將你的代碼片段添加到了我的測試配置中,但數據在solr中的輸入方式沒有任何變化。是否可以將某個功能完整的演示應用程序用作模板?只是爲了確保我沒有做任何錯誤配置。 – flexguse