私のアプリケーションはGrailsの検索可能なプラグインを使用しており、その下でCompassを使用しています。
インデックスが作成されたテーブルは約 36 MB であり、約 350 MB のインデックスを構築しています。これは、ほとんどの人々の本では小さいです。
インデックスを削除して Grails アプリケーションを起動すると、インデックス ファイルは期待どおりに再構築されますが、約 1 日実行した後、このエラーが見つかります。TellMeEntity
インデックスが更新されていることを確認するために、インスタンスが保存されるときにインスタンスで「reindex」を呼び出しています。
例外 org.compass.core.engine.SearchEngineException: エイリアス [TellMeEntity] と ID [[stored/uncompressed,indexed,omitNorms,omitTf]] の削除に失敗しました; ネストされた例外は java.io.FileNotFoundException: /var/www/web17/log/mne/index/tellmeentity/segments_2 (そのようなファイルまたはディレクトリはありません) です org.compass.core.lucene.engine.transaction.readcommitted.ReadCommittedTransaction(doDelete :348)
明らかに、このエラーが発生すると、インデックスは更新されず、新しく入力されたデータに対して検索が機能しません。
ディスク容量などの簡単なことを確認しました。「segments_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 時間は正常に機能しますが、その後問題が発生し始めます。1 日あたり約 3000 件の新規エントリが生成されていますが、これは大量のようには聞こえないため、ボリュームに関係しているとは思いません。
この問題はどのように修正できますか?