0

从 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; }

   ...
4

1 回答 1

1

在 SolrContent.cs 类中,您已将SolrUniqueKey属性添加到ContentId映射到架构中 ContentId 字段的属性。因此,这表明 Solr 索引中的 ContentId 字段将始终包含唯一值。但是,您的索引当前有多个具有相同 ContentId 值的项目。有几种方法可以解决此错误。

  1. 将 ContentId 属性上的属性更改为 just[SolrField("ContentId")]
  2. 修复您的索引,以便 ContentId 字段仅包含唯一值。

我建议您使用第二个选项,因为这将遵循您想要实现的真正意图。但是,您可能会尝试第一个只是为了验证您可以在没有错误的情况下查询 Solr 索引,然后弄清楚您的索引如何具有多个具有相同 ContentId 的项目以及修复该问题。

于 2012-10-08T14:55:03.880 回答