Использование SphinxAPI в PHPфильтр многие-ко-многим ИНТ значение с Sphinx
У меня есть 2 таблицы с многие ко многим отношения с помощью третьей. Геймеры могут посещать несколько событий.
Gamers
- id (UINT)
- username (STRING)
- category (UINT)
- lat (FLOAT)
- lng (FLOAT)
Events
- id (UINT)
- name (STRING)
gamers_events
- gamer_id (UINT)
- event_id (UINT)
Я видел о MVA с Sphinx, но я не уверен, как это должно работать.
Это то, что я имею в индексе геймер
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
Я не уверен, чтобы увидеть, как присоединиться к таблице событий в таблице игроков.
Я хотел бы установить SetFilter по id событий при поиске игроков. Не по названию событий, просто по id.
Я пошел на конкат, он отлично работает! Существует ли значительная разница в скорости между двумя методами? Я ожидаю, что у главного стола (геймеров) будет до 10.000 записей с 2-3 событиями каждый. Я также сделал еще один concat, но с тегами на этот раз, и геймеры имеют около 5 тегов. – Kalzem
О, и кстати, почему я должен положить ORDER BY NULL? – Kalzem
Mysql по умолчанию закажет результаты в группе по заказу. Но sphinx не заботится о том, какой порядок строк. Таким образом, mysql может пропустить шаг сортировки. Часто это большие накладные расходы, поэтому делает более быстрый запрос: не критично, просто приятно иметь. (хотя запрос mva, если он использовал, что СЛЕДУЕТ иметь явный порядок!) – barryhunter