コンテンツのページを管理するホストされたアプリケーションがあります。各ページには、多数のカスタマイズされたフィールドといくつかの標準フィールド (タイムスタンプ、ユーザー名、ユーザーの電子メールなど) を含めることができます。
何百もの異なるサイトがシステムを使用している可能性があるため、フィルタリング/検索を処理する効率的な方法は何ですか? 絞り込みたいグリッド ビューを想像してください。特定のフィールド (ユーザー ID、日付) でフィルタリングするか、全文検索を入力できます。
たとえば、「ユーザー ID 10 で開始されたすべてのページ」は、MySQL データベースに対する非常に迅速なクエリです。しかし、「userid が 10 で [一部の検索クエリ] に一致するユーザーによって開始されたすべてのページ」のようなものは、データベースに悪影響を与えるため、Lucene のような検索エンジンに適しています。
基本的に、他の大規模サイトがこの種のことをどのように行っているのか疑問に思っています. すべての種類のフィルタリングに検索エンジンを 100% 利用していますか? データベースクエリと検索エンジンを混在させていますか?
検索エンジンのみを使用すると、新しい/更新されたオブジェクトが検索インデックスに表示されるまでにかかる遅延時間に問題があります。つまり、インデックスをすぐに更新するのは賢明ではなく、代わりにバッチで行うのは賢明ではないことを読みました。これが 5 分ごとを意味する場合でも、単純なページ リスト (「カテゴリ:5」の検索クエリなど) を表示したときに、最近追加されたページがすぐに表示されないと、ユーザーは混乱します。
私たちは MySQL を使用しており、検索用に Lucene を詳しく調べています。私が知らない他の技術はありますか?
私の考えは、MySQL を使用して基本的なフィールドをフィルタリングする単純なフィルタリング ページを提供することです。次に、Google と同様の結果を表示する別の全文検索ページを提供します。これが唯一の方法ですか?