MySQL MATCH с несколькими ключевыми словами - PullRequest
2 голосов
/ 24 июня 2011

Я создаю функцию, которая ищет элементы, похожие на то, что вводит пользователь в форме.Пользователь заполняет два поля: тип и производитель

Я хочу найти в моей базе данных записи, которые соответствуют их соответствующим значениям, и сначала вернуть лучшие совпадения.

У меня есть запрос, который назначаетоценка для каждого поля:

SELECT id, manuf, model, type, MATCH(manuf) AGAINST('BMW') AS `score_manuf`, MATCH(type) AGAINST('Car') AS `score_type` FROM `items`

Это на самом деле работает и дает оценки.

Теперь я хочу вычислить общую оценку, то есть сумму двух оценок, которые впоследствии будут использоваться дляотсортировать результаты:

SELECT id, manuf, model, type, MATCH(manuf) AGAINST('BMW') AS `score_manuf`, MATCH(type) AGAINST('Car') AS `score_type`, (score_manuf + score_type) as 'score' FROM `items`

Когда я запускаю этот запрос, я получаю сообщение об ошибке, в котором говорится, что "score_manuf" - это неизвестный столбец.

Могу ли я не запускать арифметику для полей псевдонимов?Или, может быть, есть другой способ выполнить то, что я пытаюсь сделать?

1 Ответ

3 голосов
/ 24 июня 2011
SELECT id, manuf, model, type,
       @m := MATCH(manuf) AGAINST('BMW') AS score_manuf,
       @t := MATCH(type) AGAINST('Car') AS score_type,
       @m + @t as score
  FROM items;

Это способ определения пользовательских переменных

...