2017-02-18 11 views
0

Вместо сортировки по умолчанию в sphinx, я хотел бы отсортировать/весовые результаты на основе поля в другой таблице. Моя схема выглядит следующим образом:Использовать другую колонку таблицы для сортировки весов поиска sphinx

node { 
    id 
    weight 
} 

node_text { 
    id 
    node_id 
    text 
} 

(Примечание: Существует только один node_text для каждого узла)

Я хочу, чтобы индекс node_text, но быть в состоянии вернуть Sphinx результатов заказанных node.weight. Я предполагаю, что мне нужно что-то вроде этого:

sql_query = SELECT node_id, text from node_text 

sql_joined_field = weight from query; SELECT id, weight FROM node ORDER BY id ASC 

это правильный путь для поиска матчей ORDER BY node.weight DESC? Я хотел бы быть в состоянии выполнить запрос, как следующее:

mysql> SELECT * FROM nodetest1 WHERE MATCH('foobar') ORDER BY weight DESC; SHOW META; 

ответ

1

sql_joined_field, делает поле, вам нужно weight хранить в атрибута. Самый простой будет простой присоединиться ...

sql_query = select node_id, text, weight from node_text inner join node using (node_id=node.id) 
sql_uint_attr = weight 

что должны работать для вас SphinxQL запрос :)

Смежные вопросы