Полнотекстовый поиск в более чем 2 таблицах с разными данными

Привет у меня есть это заявление SQL

SELECT *,  MATCH (first_name,last_name) AGAINST ('*?*' IN BOOLEAN MODE) AS score, MATCH (groups.groupname) AGAINST ('*?*' IN BOOLEAN MODE) AS sscore
FROM users INNER JOIN groups  
WHERE MATCH (first_name,last_name) AGAINST ('*?*' IN BOOLEAN MODE) OR MATCH (groups.groupname) AGAINST ('*?*' IN BOOLEAN MODE) 
 ORDER BY 'score' Desc 

1) Как я могу ЗАКАЗАТЬ по совместному баллу? Я имею в виду, что с этим SQL-заявлением, он создает счет для первого матча и счет для второго. Как я могу добавить эти две оценки и упорядочить по этой оценке?

2) Также я знаю, что, поскольку данные не совпадают, INNER JOIN не самый лучший. есть ли вообще я могу это убрать?

и, наконец, если я удаляю IN BOOLEAN MODE, когда я использую, например, sim и first_name - это simos, я не получаю результат. На самом деле, я получаю пустой набор результатов в булевом режиме, если я поставлю sim, я получу simos как результат.

РЕДАКТИРОВАТЬ: я ответил на мой второй вопрос, сделав это

(SELECT `id`,MATCH(first_name,last_name) AGAINST ('?*' IN BOOLEAN MODE) AS score FROM `users` WHERE MATCH(first_name,last_name) AGAINST ('?*' IN BOOLEAN MODE))

союз (ВЫБРАТЬ groupid, MATCH(имя группы) ПРОТИВ ('? ') КАК оценка groups ГДЕ МАТЧ (имя группы) ПРОТИВ ('? '))

Это хотя и меняет все, хотя мне не нужен общий счет, но все еще есть проблема с IN BOOLEAN MODE

1 ответ

order by 'score' неверно, он будет пытаться упорядочить по фиксированной строке score', а не псевдоним, который вы создали в match ... against,

Пытаться

...
ORDER BY (score + sscore) DESC
Другие вопросы по тегам