Подключаемый модуль для поиска Grails

Мое приложение использует плагин с возможностью поиска Grails , используя Compass внизу.

Размер таблиц в начале индекса составляет около 36 МБ, и строит индексы размером около 350 МБ. В большинстве народных книг это мало.

Если мы удалим индексы и запустим приложение Grails, индексные файлы будут перестроены, как ожидалось, но затем примерно через день работы мы обнаружим эту ошибку. Мы вызываем «переиндексирование» экземпляров TellMeEntity по мере их сохранения, чтобы убедиться, что индекс обновлен.

Исключение org.compass.core.engine.SearchEngineException: Не удалось удалить псевдоним [TellMeEntity] и идентификаторы [[сохраненные / несжатые, проиндексированные, omitNorms, omitTf]]; вложенное исключение - java.io.FileNotFoundException: / var / www / web17 / log / mne / index / tellmeentity / segment_2 (такого файла или каталога нет) в org.compass.core.lucene.engine.transaction.readcommitted.ReadCommittedTransaction (doDelete : 348)

Очевидно, что при обнаружении этой ошибки индекс не обновляется, и поиск не работает с вновь введенными данными.

Мы проверили такие простые вещи, как дисковое пространство и т. д. «Сегментов_2» не существует, но я ожидал бы, что Compass создаст его сам.

В файл grails-app / conf / Searchable.groovy :

....

  mirrorChanges = true
  bulkIndexOnStartup = "fork"

....

В моем коде:

....

def formInstance = new TellMeEntity(name:'form',dataOwner:session.community,createBy:session.zoner,tellMeSite:form).save()
formInstance.reindex()

. ...

Мой текущий опыт показывает, что этот код работает нормально около 24 часов, но затем начинает давать проблемы. Мы генерируем около 3000 новых записей в день, что не похоже на большой объем, поэтому я не думаю, что это связано с объемом.

Как можно решить эту проблему?

6
задан Peter Mortensen 13 September 2011 в 12:47
поделиться