イベント インデックスでカテゴリ別にフィルター処理しようとしています。これは多対多の関係でevent_category_event_rel
あり、ピボット テーブルです。view_event_search
私のイベントデータを「非正規化」するmysqlビューです。event_category
テーブルに参加しません。
これは私の設定です:
(...)
sql_query = SELECT * FROM view_event_search
WHERE id <= (SELECT max_doc_id FROM search_indexes WHERE `index`='events_primary')
# Attribute config
sql_attr_uint = user_id
sql_attr_timestamp = created_on
sql_attr_multi = UINT categories FROM QUERY; SELECT event_id, event_category_id FROM event_category_event_rel ORDER BY event_id;
(...)
私は次のようにPHPと属性のフィルタリングを使用しています
$client->SetFilter('categories', array(1));
次のエラーが表示されます。
Search Error: no such filter attribute 'categories'
ここに私が理解したと思うものがあります:
- UINT カテゴリの FROM QUERY; 「カテゴリ」は属性名です。
- また、SQL クエリ部分は、インデックス 0 でドキュメント ID を返し、インデックス 1 でフィルター値を返す必要があります。Sphinx は、返されたドキュメント ID を sql_query ドキュメント ID に一致させます。MVA に重複するドキュメント ID (event_id) がある場合、値 (event_category_id) がそのドキュメントの値に「追加」されます。
私は誤解していますか?カテゴリ別にフィルタリングするにはどうすればよいですか? とても有難い!