1

これが最善の方法かどうかはわかりませんが、私の目的は、Lucene 検索結果のページネーションを行うことです。

検索を実行し、すべての結果をキャッシュに保存し、キャッシュされた結果から結果の特定のサブセットを返すことができるページ関数を結果コントローラーに設定することは理にかなっていると思いました。

これは悪いアプローチですか?どのような種類のキャッシュも使用したことがないので、どこから始めればよいかわかりません。CI Caching Driver は有望に見えましたが、すべてがサーバー エラーをスローします。APC をインストールする必要があるのか​​、Memcached をインストールする必要があるのか​​、または何をすればよいのかわかりません。

ヘルプ!

4

2 に答える 2

1

Luceneは、規模に合わせて構築された検索エンジンです。検索結果をキャッシュする必要が生じるまで、かなり遠くまでプッシュできます。デフォルト設定を使用して実行することをお勧めします。

それでもキャッシュの必要性を感じている場合は、最初にこのLucene FAQを見てから、次のレベルはおそらくmemcacheの行にあるでしょう。

それが役に立てば幸い!

于 2011-07-06T18:53:51.760 に答える
0

Zend Search Luceneはファイルシステム上でインデックス付けされており、上記のユーザーが述べたように、スケールに合わせて構築されています。何十万ものドキュメントのインデックスを作成している場合を除いて、キャッシュは実際には必要ありません。特に、あるファイルからデータを取得して別のファイルに保存するだけで効果的に実行できるためです。

一方、たとえば商品IDのみを検索インデックスに保存し、結果が得られたときにデータベースから商品を選択する場合は、キャッシュする価値があります。これは、 Zend_Cacheを使用して簡単に実現できます。

ZendDbキャッシングの基本的な例は次のとおりです。

$frontendOptions = array(
    'automatic_serialization' => true
);

$backendOptions = array(
    'cache_dir' => YOUR_CACHE_PATH_ON_THE_FILE_SYSTEM,
    'file_name_prefix' => 'my_cache_prefix',
);

$cache = Zend_Cache::factory('Core',
    'File',
    $frontendOptions,
    $backendOptions
);
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);

これは、_initDbCache(好きなように呼び出す)メソッドでブートストラップファイルに追加する必要があります。

もちろん、これは非常に単純な実装であり、完全な結果キャッシングを実現するわけではありません。ZendDbを使用したZendキャッシングの詳細については、こちらを参照してください

于 2011-09-28T11:36:22.947 に答える