我正在尝试按我的事件索引中的类别进行过滤 - 这是一个多对多的关系,并且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) 将“附加”到该文档的值。
我是不是误会了?以及如何按类别过滤?非常感激!