0

商品とユーザーに関する情報を格納する非常に小さな MySQL データベースがあります。姓名で商品を購入したユーザーの検索を実装しようとしています。Sphinx 検索エンジンには、多くの優れた推奨事項があります。だから私はそれを使用しています。今私の検索は次のようになります:

  1. ファーストネームとラストネームに従って、ユーザーの Sphinx ID で検索します。

  2. 特定のフィルター (id またはカテゴリ、価格など) に従って MySQL (Sphinx ではなく) の商品を検索します。user_id は item1 の ID です。

1 つの JOIN クエリでこれを実装する方法は?

4

1 に答える 1

2

あなたが言うように、スフィンクスインデックスとデータベースは異なる「システム」内にあるため、直接はできません。

したがって、アプリケーションで「結合」が行われています。効果的に結合するものをすでに実装しているようです。

しかし、本当にそのシステムを使い続けたくない場合は、2 つの選択肢があります。

1)スフィンクスSE . これは偽の mysql ストレージ エンジンです。仮想テーブルに対してクエリを実行すると、バックグラウンドでクエリが作成されて sphinx インデックスに戻り、クエリの結果がテーブルとして mysql に表示されます。これは mysql テーブルであるため、mysql はそれをデータベース テーブルと結合して結果セットを表示し、クエリとデータを結合します。(まだ別々のシステムがありますが、mysql は結合ロジックを実装しています)

2)属性。フルテキスト インデックスと共に、スフィンクス インデックスにデータを格納できます。Sphinx は結果セットで属性を返すことができます。このようにして、結合の必要性を回避できます。これは、(mysql から取得する必要がある) データと一緒に検索結果を一度に取得できるためです。(このようにして、1 つの大きな「正規化された」インデックスを作成します)

于 2013-09-07T11:51:17.043 に答える