1

これが私のデータベースの構造で、製品とカテゴリがあります

-製品表

CREATE TABLE `product_table` (
`product_id` int(11) NOT NULL,
`product_title` text,
`product_description` text
);

--Product2Categoryテーブル

CREATE TABLE `product2category_table` (
`product_id` int(11) NOT NULL,
`category_id` int(11) NOT NULL
);

カテゴリに複数値の属性を作成しています

sql_attr_multi = uint prod_cat from query; \
select p.product_id, c.category_id from product as p, product2category as c
            where c.product_id = p.product_id;

製品とカテゴリーの関係は多対多です。例として、lenovoと呼ばれる製品は次のカテゴリに属する​​ことができます。

category_id category_title
    12           sturdy
    20           laptop

質問:php-sphinx apiを使用してクエリを実行し、説明に電子機器が含まれるすべての製品を、カテゴリID12と20の両方に属するものを見つけるにはどうすればよいですか。通常$cl-> setfilter('prod_cat'、array(12,20)はどちらのカテゴリに属する​​製品でも、製品のすべてのカテゴリをグループ化して全文検索を実行すると、非常に簡単ですが、MVA機能を使用して処理する方法はあります。

4

1 に答える 1

2
$cl->setfilter('prod_cat',array(12));
$cl->setfilter('prod_cat',array(20));

複数の呼び出しは'AND'されます:)


余談ですが、MVAクエリを簡素化できます...

sql_attr_multi = uint prod_cat from query; \
    select product_id, category_id from product2category
于 2013-03-14T19:58:47.930 に答える