2012-10-08 24 views
0

而從Solr中獲取數據,我有錯誤的打擊同時獲得來自Solr的數據,我有錯誤的打擊

具有相同鍵的項已被添加

public static void Solryeg() 
    { 
     ISolrOperations<SolrContent> solr = ServiceLocator.Current 
            .GetInstance<ISolrOperations<SolrContent>>(); 

     var q = solr.Query(SolrQuery.All); 
    } 

SolrContent.cs

public class SolrContent 
{ 
    [SolrUniqueKey("ContentId")] 
    public int ContentId { get; set; } 


    [SolrField("ContentName")] 
    public string ContentName { get; set; } 

    [SolrField("ContentTitle")] 
    public string ContentTitle { get; set; } 

    [SolrField("ContentIsActive")] 
    public bool ContentIsActive { get; set; } 

    [SolrField("ContentRatingEnabled")] 
    public bool ContentRatingEnabled { get; set; } 

    ... 

回答

1

在你SolrContent.cs類,你已經添加了SolrUniqueKey屬性爲ContentId親映射到模式中的ContentId字段的映射。因此,這表示Solr索引中的ContentId字段將始終包含唯一值。但是,您的索引目前有多個具有相同ContentId值的項目。這個錯誤有幾種方法。

  1. 變化內容識別財產屬性只是[SolrField("ContentId")]
  2. 修復索引,使得內容識別字段只包含唯一值。

我建議你去第二個選項,因爲這將遵循你試圖實現的真實意圖。但是,您可以嘗試第一個,以驗證您可以查詢Solr索引而不出現錯誤,然後找出索引中包含多個具有相同ContentId的項目以及該問題的修復方法。

相關問題