Интеграция SolrNet + NHibernate - PullRequest
1 голос
/ 23 марта 2011

В настоящее время я использую NHibernate.Search в своем приложении, которое работает нормально, однако теперь мне нужно перейти на Solr, потому что мне нужно сбалансировать нагрузку на мое приложение.

У меня есть базовые настройки и работа, но результаты получаются не так, как ожидалось ... вот что я сделал до сих пор:

1) Запуск службы java solr в командной строке. (Я могу получить доступ http://localhost:8983/solr/admin/) 2) Инициализировал Solr с помощью моего Nhibernate Cfg, как описано в вики SolrNet 3) Я добавил некоторые атрибуты к одному из моих объектов (Id, Title, Description) 4) Мой schema.xml был изменен, чтобы соответствовать моим проиндексированным полям (id, title, description) 5) Я добавил пару объектов в индекс (я вижу их в консоли администратора) 6) Я использую следующий код для возврата результатов поиска (согласно вики)

NHibernate.SolrNet.CfgHelper cfgHelper = new CfgHelper();

ICollection<T> entities;

ISessionFactory sessionFactory = Session.SessionFactory;
using (var session = cfgHelper.OpenSession(sessionFactory)) {
   entities = session.CreateSolrQuery(term).SetMaxResults(10).List<T>();
}
return entities.ToList();

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

Пол

1 Ответ

2 голосов
/ 23 марта 2011

В настоящее время интеграция NHibernate.SolrNet не извлекает объекты из базы данных при запросе Solr. Вы можете либо развернуть SolrNet и реализовать это (это вопрос извлечения из базы данных по идентификатору после запроса Solr), либо вы можете оставить отдельные объекты для SolrNet и NHibernate (и удалить интеграцию NHibernate.SolrNet из вашего проекта. ), что может быть более трудоемким, но должно быть значительно более гибким.

...