Как установить приоритет для таблиц?

0

У меня есть 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;
Теги:
sphinx

1 ответ

0

Ну, если вы все еще используете оригинальный 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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню