c# - Linq to Lucene 错误 : "Classes must define at least one field as a default search field"

标签 c# linq search lucene

我将以下属性应用于我的 linq to sql 类:

[Document(MetadataType = typeof(SomeObjectMetadata))]
public partial class SomeObject
{
}

这是元数据代码:

public class SomeObjectMetadata
{

    [Field(FieldIndex.Tokenized, FieldStore.Yes, IsKey = true)]  
    private object ProductId { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes, IsDefault = true)]  
    private object Name { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)]  
    private object Description { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)] 
    private object Breadcrumb { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)] 
    private object Tab1Content { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)] 
    private object Tab2Content { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)] 
    private object Tab3Content { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)] 
    private object Tab4Content { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)] 
    private object Tab5Content { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)] 
    private object Manufacturer { get; set; }

}

索引存储写得很好,但是当我尝试搜索它时,出现标题中显示的错误。这是一个示例搜索:

        var qry = from r in _dbi.Get<SomeObject>()
                  where r.Description.Like(search)
                  select r;

枚举“qry”时,抛出异常“类必须至少将一个字段定义为默认搜索字段”。

最佳答案

哇,我是个白痴。元数据字段是私有(private)的。当然,这可以解决问题:

public class Catalog_ProductMetadata
{

    [Field(FieldIndex.Tokenized, FieldStore.Yes, IsKey = true)]
    public object ProductId { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes, IsDefault = true)]
    public object Name { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)]
    public object Description { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)]
    public object Breadcrumb { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)]
    public object Tab1Content { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)]
    public object Tab2Content { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)]
    public object Tab3Content { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)]
    public object Tab4Content { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)]
    public object Tab5Content { get; set; }

    [Field(FieldIndex.Tokenized, FieldStore.Yes)]
    public object Manufacturer { get; set; }

}

关于c# - Linq to Lucene 错误 : "Classes must define at least one field as a default search field",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1631823/

相关文章:

c# - 在字符串末尾找到匹配项时,使用 .Contains() 和 .ToLowerInvariant() 的 EF 查询结果没有匹配项

与Solr(或elasticsearch)匹配的算法

python - 从项目中 Grep 类/函数

c# - 指定的转换对日期选择器无效

c# - .NET : How do you remove a specific node from an XMLDocument using XPATH?

c# - 将枚举转换为列表

c# - 如何从 Linq 中的逗号分隔字符串中选择标记和索引

c# - `[Authorize(Roles = "管理 ")]` 无限循环 ASP.NET MVC 和 Azure Active Directory B2C

c# - 我怎样才能改进 LINQ?

java - 在java中搜索列表中对象的最快方法