2010-10-29 3 views
6

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

Таблицы начинаются с индексирования около 36   МБ и строят индексы около 350   МБ. Это мало в книгах большинства народов.

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

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

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

Мы проверили простые вещи, такие как дисковое пространство и т. Д. «Segment_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 новых записей в день, что не похоже на большой объем, поэтому я не думаю, что это связано с объемом.

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

+0

где в вашем коде вы переиндексируете? Я подозреваю, что есть файл .lock где-то, что было создано и вызывает проблемы. Больше кода поможет. –

+0

Код обновлен. – user304217

+1

Добавлен сегмент кода. Я также рассматриваю не использование индексов локальных файлов по умолчанию, а хранение кеша в базе данных с помощью JDBCDirectory. – user304217

ответ

0

стрельба из бедра: ваше местоположение указателя/var/www/web17/log/mne подвержено некоторому процессу вращения журнала, который по ошибке пытается повернуть файлы индекса? 24 часа выглядит, как вмешательство в работу на базе cron.

Смежные вопросы