Использование нескольких настроек базы данных с Lucene.Net - PullRequest
0 голосов
/ 09 апреля 2011

Привет Я разрабатываю функцию поиска для веб-приложения с помощью Lucene.Net и NHibernate.Search. Приложение используется многими компаниями, но запускается как единый сервис, использующий разные базы данных для разных компаний. Поэтому мне потребуется каталог индекса для каждой базы данных, а не один каталог для всего приложения. Есть ли способ добиться этого в Lucene.Net?

Я также рассмотрел вопрос о сохранении индексов для каждой компании в соответствующей базе данных, но не нашел подходящих компонентов для этого. Я читал о Compass и JdbcDirectory для Java, но мне нужно что-то для C # или NHibernate. Кто-нибудь знает, есть ли порт JdbcDirectory или что-то подобное для C #?

1 Ответ

1 голос
/ 09 апреля 2011

Хм, похоже, что вы ничего не можете изменить на уровне фабрики сеансов с помощью обычного nhibernate.search. Вам могут потребоваться отдельные экземпляры конфигурации, или, возможно, попробовать что-то вроде Свободный поиск NHibernate , чтобы облегчить боль.

Соединяя его из вики проекта, вы можете сделать что-то вроде этого, чтобы раскрутить отдельные фабрики сессий, указывающие на разные каталоги баз данных / индексов:

Fluently.Configure()
    .Database(SQLiteConfiguration.Standard.InMemory())
    .Search(s => s.DefaultAnalyzer().Standard()
                             .DirectoryProvider().FSDirectory()
                             .IndexBase("~/Index")
                             .IndexingStrategy().Event()
                             .MappingClass<LibrarySearchMapping>())
    .BuildConfiguration()
    .BuildSessionFactory();

Свойство IndexBase и соединение - это части, которые вам нужно определить для каждого клиента. Как только вы настроите фабрики сессий, вы сможете разрешить их, используя любую стратегию, которую вы используете в настоящее время.

Надеюсь, это поможет

...