使用 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。
在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。