SimpleLucene无法实现接口成员

时间:2011-12-14 14:10:53

标签: c# lucene.net

我正在尝试关注these instructions。 我还要提一下,我使用NuGet package而不是CodePlex来源。

我遇到了这两个错误:

  

错误1
  'LuceneTest.Models.ProductIndexDefinition'没有实现接口成员'SimpleLucene.IIndexDefinition.GetIndex(LuceneTest.Models.Product)'。 'LuceneTest.Models.ProductIndexDefinition.GetIndex(LuceneTest.Models.Product)'无法实现'SimpleLucene.IIndexDefinition.GetIndex(LuceneTest.Models.Product)',因为它没有匹配的返回类型'Lucene.Net.Index.Term ”。

     

错误2
  'LuceneTest.Models.ProductIndexDefinition'没有实现接口成员'SimpleLucene.IIndexDefinition.Convert(LuceneTest.Models.Product)'。 'LuceneTest.Models.ProductIndexDefinition.Convert(LuceneTest.Models.Product)'无法实现'SimpleLucene.IIndexDefinition.Convert(LuceneTest.Models.Product)',因为它没有匹配的返回类型'Lucene.Net.Documents.Document ”。

从这段代码:

using System.Web;
using SimpleLucene;
using Lucene.Net.Documents;
using Lucene.Net.Index;

namespace LuceneTest.Models
{
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public class ProductIndexDefinition : IIndexDefinition<Product>
    {
        public Document Convert(Product p)
        {
            var document = new Document();
            document.Add(new Field("id", p.Id.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            document.Add(new Field("name", p.Name, Field.Store.YES, Field.Index.ANALYZED));
            return document;
        }

        public Term GetIndex(Product p)
        {
            return new Term("id", p.Id.ToString());
        }
    }
}

当我在object explorer中查看IIndexDefinition时,它看起来像这样:

public interface IIndexDefinition<T>
    where T : class
{
    Lucene.Net.Documents.Document Convert(T entity);
    Lucene.Net.Index.Term GetIndex(T entity);
}

我不明白发生了什么。我的意思是错误是说该类没有实现接口,因为返回类型不匹配,但我只是没有看到我可以在何处或如何修复它。

1 个答案:

答案 0 :(得分:0)

问题是Nuget包不是有效的包。下载simplelucene的最新来源。您可以看到使用2.9.4.2的测试。用这个dll替换你的2.9.4.1 lucene.net。