Я новичок в mysql и sphinx и пробую руки перед тем, как отправиться на живой проект.
Я хочу применить UNION ALL на 2 таблицы в sphinxsearch. Ниже мой sql запрос
sql_query = \
(SELECT users.id AS uid, users.fname, users.lname, users.email \
FROM users) \
UNION ALL \
(SELECT documents.id AS diid, documents.description \
FROM documents);
но когда я иду на команду index, она показывает мне ошибку
ОШИБКА: индекс ‘my_search’: sql_query: у вас есть ошибка в вашем SQL
синтаксис; проверьте руководство, соответствующее вашей версии сервера MySQL
правильный синтаксис для использования рядом с пользователями) UNION
ALL SELECT documents.id AS dii ‘в строке 1
(DSN = MySQL: // корень: *** @ локальный: 3306 / testsphinx).
Я думаю, что два «подзапроса» в UNION должны иметь одну и ту же схему. Т.е. база данных будет производить один набор результатов со столбцами. Это просто строки из разных таблиц.
Если вы хотите индексировать две таблицы в SPhinx — в одном индексе, возможно, лучше всего использовать несколько источников
source users {
...
sql_query = \
SELECT users.id AS uid, users.fname, users.lname, users.email \
FROM users
...
}
source documents {
...
sql_query = \
SELECT documents.id AS diid, documents.description \
FROM documents
...
}
index index1 {
source users
source documents
path = /var/sphinx/index1
....
}
Но может сделать их слишком отдельными показателями. Это дает большую гибкость, МОЖЕТ запросить их вместе, если хотите
sphinx> SELECT * from users,documents WHERE MATCH('toad')
или можете запросить их индивидуально тоже.
Других решений пока нет …