6

私のアプリケーションは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 件の新規エントリが生成されていますが、これは大量のようには聞こえないため、ボリュームに関係しているとは思いません。

この問題はどのように修正できますか?

4

1 に答える 1

0

腰から撃ちます: あなたのインデックスの場所 /var/www/web17/log/mne は、エラーによってインデックス ファイルをローテーションしようとするログファイル ローテーション プロセスの対象ですか? 24 時間は、ここで cron ベースのジョブが干渉しているようです。

于 2011-10-04T01:51:32.977 に答える