NHibernate.Search, индексные файлы Lucene не созданы - PullRequest
0 голосов
/ 20 января 2009

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

Кажется, что NHibernate загружает его правильно:

2009-01-20 17:37:17,751 [1] DEBUG NHibernate.Impl.SessionFactoryImpl   - 
  instantiating session factory with properties: {use_reflection_optimizer=True,
  hibernate.search.analyzer=Lucene.Net.Analysis.SimpleAnalyzer, Lucene.Net, 
  hibernate.search.default.directory_provider=NHibernate.Search.Store.FSDirectoryProvider, 
  NHibernate.Search, dialect=NHibernate.Dialect.PostgreSQL82Dialect, 
  connection.driver_class=NHibernate.Driver.NpgsqlDriver, 
  hibernate.search.default.indexBase.create=true, 
  hibernate.search.default.indexBase=c:\temp\Lucene, 
  connection.provider=NHibernate.Connection.DriverConnectionProvider, 
  connection.connection_string_name=Dev}

Но после этого, похоже, ничего не работает. Файлы не создаются, и c: \ temp \ Lucene также никогда не создается. Я проверил разрешения и не могу найти что-то не так с ним.

Это стало для меня тупиком, и я понятия не имею, как поступить в моей отладке. Любая обратная связь очень ценится.

Хорошо, обновления:

Я выяснил, что FullTextIndexEventListener.Initialize (NHibernate.Cfg.Configuration cfg) никогда не вызывается.

Я предполагал, что при добавлении прослушивателя в конфигурацию NHibernate он будет вызывать его (поскольку он реализует NHibernate.Event.IInitializable), но при проверке источника для NHibernate это не так?

Странно то, что он работает на моей машине разработчиков без этого ручного вызова. И мы запускаем тот же источник, что и те же библиотеки.

1 Ответ

1 голос
/ 21 января 2009

Хорошо, выяснилось, что каким-то образом моя машина ускоряет фазу инициализации между ActiveRecord и NHibernate, что означает, что, поскольку я регистрирую EventListeners в NHibernate On_ApplicationStart (), NHibernate уже инициализирован, поэтому никогда не вызывает Initialize () в слушатель.

На моем коллегном компьютере NHibernate еще не инициализировался при регистрации списков событий, поэтому вызывал Initialize.

Это несколько недостаток в дизайне ActiveRecord, поскольку мне нужно инициализировать AR, прежде чем я смогу что-то зарегистрировать в NHibernate. Вроде как улов 22.

Надеюсь, кто-то найдет эту информацию полезной.

...