3

アプリケーションのいくつかの異なるテーブルにあるレコードの全文検索に Zend_Search_Lucene を使用しています。この機能を実装したばかりで、現在、インデックスは、アプリケーションのデプロイ後に検索機能を最初に使用したときに構築されています。これは明らかに、私が本番環境で望んでいるものではありません。

アプリケーションの展開ロジックの一部としてインデックス作成を実行し、追加/更新されたレコードのインクリメンタル インデックスを 30 分ごとに実行する簡単な方法を探しています。

これを実装するには、何を確認する必要がありますか?

あなたが提供できるかもしれないすべての助けに感謝します。

4

1 に答える 1

1

展開の一部としてインデックスを作成する必要はありません。ここで私は解決策を提案しています。

アプリケーションのデフォルトディレクトリをsearchdataと言います。この内部で、さまざまなタイプのデータへの個別のパスを作成します(たとえば、都市の場合、city_indexとしてフォルダー)。(アプリケーションの)構成ファイル内で、これらのパスを指定します。テーブルデータを読み取り、インデックスを作成するようにphpスクリプトを記述します。これらのスクリプトは、構成パスを使用してインデックスを作成します。これらすべてのスクリプトを実行するマスタースクリプトを作成します。

サーバーでこれらのスクリプトを1回実行します。この以降の検索は続行されます(検索には構成パスを使用します)。(最初の検索では索引付けなし)

新しい都市が追加されている場合は、db updateを使用してその都市(モデル関数)を追加するコードで、インデックスも更新します。また、検索時間を短縮するインデックスファイルを最適化します。この操作は頻繁な操作ではないため、オンザフライでの更新は問題ありません。

于 2010-08-11T10:17:52.210 に答える