php sphinx の簡単な例を紹介しますので、困っている方は参考にしてください。
コードは次のとおりです: リーリーphp sphinx の正式な紹介については、ドキュメントを参照してください: http://bbs.it-home.org/shouce/php5/book.sphinx.html。 バッチクエリ (またはマルチクエリ) により、searchd は可能な内部最適化を実行し、いかなる場合でもネットワーク接続とプロセス作成のオーバーヘッドを削減できます。個別のクエリと比較して、バッチ クエリでは追加のオーバーヘッドが発生しません。したがって、Web ページで複数の異なるクエリを実行する場合は、必ずバッチ クエリの使用を検討してください。 たとえば、同じ全文クエリを複数回実行しても、異なる並べ替えやグループ化の設定を使用すると、searchd は負荷の高い全文検索と関連性の計算を 1 回だけ実行し、これに基づいて複数のグループ化された結果を生成します。 単に検索結果を表示するだけでなく、メーカーごとにグループ化された製品の数など、カテゴリに関連する集計情報も表示する必要がある場合があります。この場合、バッチ クエリを使用すると、多くのオーバーヘッドが節約されます。 バッチ クエリを使用しない場合、これらの本質的に同一のクエリを複数回実行して同じ一致を取得する必要があり、その結果、異なる結果セットが得られます。バッチ クエリを使用する場合は、これらのクエリを 1 つのバッチ クエリに組み合わせるだけで、Sphinx がこれらの冗長な全文検索を内部的に最適化します。 AddQuery() は、現在の設定ステータスとクエリをすべて内部的に保存し、後続の AddQuery() 呼び出しで設定を変更することもできます。以前に追加したクエリは影響を受けません。実際に変更する方法はありません。 上記のコードを使用すると、最初のクエリは「documents」インデックスで「hello world」をクエリし、結果を関連性によって並べ替えます。2 番目のクエリは、「products」インデックスで「ipod」をクエリし、結果を価格で並べ替えます。 、3 番目のクエリは、「books」インデックスで「harry Potter」を検索しますが、結果は依然として価格順に並べ替えられています。 2 番目の SetSortMode() 呼び出しは最初のクエリには影響しませんが (すでに追加されているため)、次の 2 つのクエリは影響することに注意してください。 さらに、AddQuery() の前に設定されたフィルタリングは、後続のクエリで引き続き使用されます。したがって、最初のクエリの前に SetFilter() を使用すると、最初に ResetFilters() を呼び出してフィルタリング ルールをクリアしない限り、AddQuery() 経由で実行される 2 番目のクエリ (および後続のバッチ クエリ) に同じフィルタリングが適用されます。同時に、いつでも新しいフィルタリング ルールを追加できます。 AddQuery() は現在の状態を変更しません。つまり、既存の並べ替え、フィルタリング、グループ化の設定はすべてこの呼び出しによって変更されないため、後続のクエリで既存の設定を簡単に再利用できます。 AddQuery() は、RunQueries() の結果によって返された配列内のインデックスを返します。これは 0 から始まる増分整数です。つまり、最初の呼び出しでは 0 が返され、2 番目の呼び出しでは 1 が返されます。この便利な機能により、下付き文字が必要なときに手動で記録する必要がなくなります。 |