Ошибка Linq to Lucene: «Классы должны определять хотя бы одно поле в качестве поля поиска по умолчанию» - PullRequest
3 голосов
/ 27 октября 2009

У меня есть следующие атрибуты, примененные к моему классу 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 Ответ

3 голосов
/ 27 октября 2009

Ух ты, я идиот. Поля метаданных были приватными. Это исправляет, конечно:

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...