#lucene.net #indexing #nhibernate.search
#lucene.net #индексирование #nhibernate.search
Вопрос:
Привет, я разрабатываю функцию поиска для веб-приложения с Lucene.Net и NHibernate.Поиск. Приложение используется множеством компаний, но запускается как единый сервис, используя разные базы данных для разных компаний. Поэтому мне понадобился бы каталог индексов для каждой базы данных, а не один каталог для всего приложения. Есть ли способ достичь этого в Lucene.Net ?
Я также рассматриваю возможность сохранения индексов для каждой компании в соответствующей базе данных, но не нашел для этого никаких удовлетворяющих компонентов. Я читал о Compass и JdbcDirectory для Java, но мне нужно что-то для C # или NHibernate. Кто-нибудь знает, есть ли порт JdbcDirectory или что-то похожее для C #?
Комментарии:
1. Понятия не имею, сможете ли вы добраться туда с помощью nhibernate search, но вы могли бы легко сделать это с помощью Lucene. ИЗНАЧАЛЬНО NET, но для этого потребуется немного кодирования.
Ответ №1:
Хм, похоже, вы ничего не можете изменить на уровне фабрики сеанса, используя обычный nhibernate.search. Возможно, вам понадобятся отдельные экземпляры конфигурации или, возможно, попробуйте что-то вроде беглого поиска в NHibernate, чтобы облегчить задачу.
Собирая это вместе из wiki проекта, кажется, что вы могли бы сделать что-то вроде этого, чтобы развернуть отдельные фабрики сеансов, указывающие на разные базы данных / индексные каталоги:
Fluently.Configure()
.Database(SQLiteConfiguration.Standard.InMemory())
.Search(s => s.DefaultAnalyzer().Standard()
.DirectoryProvider().FSDirectory()
.IndexBase("~/Index")
.IndexingStrategy().Event()
.MappingClass<LibrarySearchMapping>())
.BuildConfiguration()
.BuildSessionFactory();
Свойство «IndexBase» и соединение — это части, которые вам нужно будет определить для каждого клиента. Как только вы настроите фабрики сеансов, вы сможете разрешить их, используя любую стратегию, которую вы используете в настоящее время.
Надеюсь, это поможет
Комментарии:
1. Спасибо, это решило проблему. Я просто настраиваю разные IndexBase: es для каждой компании / пользователя. Кажется, работает действительно гладко
2. Потрясающе, я не использовал Fluent NHibernate search, но я рад слышать, что это работает хорошо. Мне нравится идея получения конфигурации поля из атрибутов, это было одной из моих главных проблем с NHibernate. Поиск.