使用 Sphinx 过滤多对多 int 值

Filter many-to-many int value with Sphinx

在PHP

中使用 SphinxAPI

我有 2 个 table 通过第三个建立多对多关系。玩家可以参加多个活动。

Gamers
- id (UINT)
- username (STRING)
- category (UINT)
- lat (FLOAT)
- lng (FLOAT)

Events
- id (UINT)
- name (STRING)

gamers_events
- gamer_id (UINT)
- event_id (UINT)

我看到有关 Sphinx 的 MVA,但我不确定它应该如何工作。

这是我在玩家指数中的内容

sql_query           = SELECT g.id\
                            , g.username\
                            , g.category\
                        FROM gamer g\
                        /* some LEFT JOIN with other tables */
                        GROUP BY g.id

sql_attr_multi      = uint event from query; SELECT id, name FROM event

我不确定如何向游戏玩家 table 加入活动 table。

我想在搜索游戏玩家时通过事件 ID 进行设置过滤。不是事件名称,只是 id。

要么..

sql_query = SELECT g.id, \
      GROUP_CONCAT(ge.event_id) AS event, \
       ...
      FROM gamer g\
          LEFT JOIN gamers_events ge ON (ge.gamer_id = g.id) \
          /* some LEFT JOIN with other tables */
      GROUP BY g.id \
      ORDER BY NULL
sql_attr_multi      = uint event from field; 

(sphinx可以从列中提取出来)

或(sql_query不变)...

sql_attr_multi      = uint event from query; SELECT gamer_id, event_id FROM gamers_events ORDER BY gamer_id

在任何一种情况下都不需要事件 table,只需要 gamers_events table。