У меня есть 4 таблицы для индексирования. Моя проблема в том,
Я хочу получить результаты поиска не по весу, а по приоритетам таблиц. Я имею в виду, что результаты сопоставления таблицы 1 сначала отображаются для таблицы 2 и т.д.
В настоящее время он сначала получает результаты с наивысшим весом.
запрос
Select UUID_SHORT() AS sphinxid, info as keyword, 'column_name' as type from table 1
UNION ALL
Select UUID_SHORT() AS sphinxid, info as keyword, 'column_name' as type from table 2
UNION ALL
Select UUID_SHORT() AS sphinxid, info as keyword, 'column_name' as type from table 3
UNION ALL
Select UUID_SHORT() AS sphinxid, info as keyword, 'column_name' as type from table 4;
Ну, если вы все еще используете оригинальный SphinxAPI, есть SetIndexWeights. http://sphinxsearch.com/docs/current.html#api-func-setindexweights Хотя придется разбивать данные на отдельные фактические индексы.
... в SphinxQL нет такого эквивалента. насколько мне известно
Вероятно, проще всего добавить новый атрибут в индекс
sql_query = \
Select ...,8 as multiplier from table1 \
UNION ALL \
Select ...,4 as multiplier from table2 \
UNION ALL \
...
sql_attr_uint = multiplier
Затем при выполнении запросов можно использовать этот коэффициент
sphinxQL> SELECT id,WEIGHT()*multiplier AS w FROM index WHERE MATCH(..) ORDER BY w DESC;