1

インデックスの多対多の関係について質問があります。例えば:

table A : id,value_a(string)
table B : id,value_b(string)
table C: id_a,id.b,value_c(string)

クエリは次のとおりです。

select * from C where C.id_a = A.id And A.value_a like keyword_a
         and C.id_b = B.id andB.value_b like keyword_b

そこで、sphinx による全文検索でテーブル A とテーブル B のインデックスを作成したいのですが、2 つの検索結果をテーブル C に結合する方法が見つかりません。

誰でも私を助けることができますか?どうもありがとう!

4

1 に答える 1

1

すべてのデータでインデックスを作成する必要があります

sql_query = select C.id,id_a,id_b,value_a,value_b,value_c \
       from C \
       inner join A on (C.id_a = A.id) \
       inner join B on (C.id_b = B.id)
sql_attr_uint = id_a
sql_attr_uint = id_b

id_a と id_b を属性としてインデックスに格納することにより、(検索時に) グループ化して、A または B ごとに 1 つのドキュメントのみを取得できます。

ところで、クエリは次のようになります

$cl->setMatchMode(SPH_MATCH_EXTENDED);
$res = $cl->Query('@value_a keyword_a @value_b keyword_b',$sphinx_index);
于 2013-05-23T17:29:50.117 に答える