Как программно добавить индексный столбец для поиска NHibernate (Lucene.net) без использования FieldAttribute - PullRequest
0 голосов
/ 18 декабря 2009

Я пытаюсь выяснить, как программным способом (то есть без использования FieldAttribute) добавить столбец индекса для поиска NHibernate (Lucene.net).

У меня проблемы с наследованием из-за того, что FieldAttribute не наследуется автоматически.

Следующий код иллюстрирует то, что я хочу сделать.

class A
{
    [Field(Index.Tokenized)]
    public virtual string P1
    {
        get
        {
            return "P1";
        }
    }
}

class B : A
{
    public override string P1
    {
        get
        {
            return "P1+";
        }
    }
}

Я ожидал, что переопределение P1 будет проиндексировано, но это не так. Когда я проверил класс FieldAttribute, я обнаружил, что в атрибуте AttributeUsage не указано Inherited = true.

Затем я добавил FieldAttribute к переопределенному свойству, но это привело к сбою поиска NHibernate, за исключением того, что элемент с таким же ключом уже добавлен в словарь. Я полагаю, это потому, что есть два свойства с одинаковыми именами, оба с FieldAttribute в цепочке типов, и он принимает только одно.

Итак, как мне программно решить эту проблему, не используя FieldAttribute?

Ответы [ 2 ]

1 голос
/ 06 марта 2010

Я только что запустил интерфейс отображения Fluent NHibernate.Search, похожий на FluentNHibarnate, который позволяет отображать ваши сущности без атрибутов.

public class BookSearchMap : DocumentMap<Book>
{
    public BookSearchMap()
    {
        Id(p => p.BookId).Field("BookId").Bridge().Guid();
        Name("Book");
        Boost(500);
        Analyzer<StandardAnalyzer>();

        Map(x => x.Title)
            .Analyzer<StandardAnalyzer>()
            .Boost(500);

        Map(x => x.Description)
            .Boost(500)
            .Name("Description")
            .Store().Yes()
            .Index().Tokenized();
    }
}

Вам следует взглянуть на сайт проекта, размещенный на codeplex.

http://fnhsearch.codeplex.com/

1 голос
/ 18 декабря 2009

Недавно было реализовано отображение без атрибутов, посмотрите это сообщение в блоге .

...