sql_query: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом

Я новичок в 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).

0

Решение

Я думаю, что два «подзапроса» в 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')

или можете запросить их индивидуально тоже.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]