代码之家  ›  专栏  ›  技术社区  ›  TheSoftwareJedi jac

linq to lucene错误:“类必须将至少一个字段定义为默认搜索字段”

  •  3
  • TheSoftwareJedi jac  · 技术社区  · 15 年前

    我的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”时,抛出异常“类必须至少定义一个字段作为默认搜索字段”。

    1 回复  |  直到 15 年前
        1
  •  3
  •   TheSoftwareJedi jac    15 年前

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

    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; }
    
    }
    
    推荐文章