У меня проблема. Я сделал простую поисковую систему, которая ищет по бренду и модели автомобиля. По причинам производительности запросов и большого количества данных в базе данных я решил использовать полнотекстовый поиск. Все в порядке, но теперь я сталкиваюсь с проблемой:
Я бы хотел найти все автомобили марки «Ауди» и модель «Q7». На данный момент у меня есть этот SQL-запрос, но он не работает правильно, из-за длины слова «Q7»:
SELECT `a`.`id`, `a`.`title`, `a`.`askprice`, `a`.`description`, `a`.`picture` FROM (`mm_ads` as a) WHERE `a`.`category` = '227' AND `a`.`askprice` >= '0' AND `a`.`askprice` <= '144000' AND (MATCH(a.title) AGAINST ('+audi +q7' IN BOOLEAN MODE )) GROUP BY `a`.`id` ORDER BY `a`.`id` ASC LIMIT 30
У меня нет доступа к изменению файла конфигурации MySQL, чтобы установить значение ft_min_word_len
в значение 2. На данный момент значение равно 3. Есть ли другой способ справиться с этим?
Вот еще одна проблема:
Я хотел бы получить все автомобили марки «BMW» и модель «116». Например, у меня есть автомобиль под названием BMW, 1, 116i
. Мой SQL-запрос:
`SELECT `a`.`id`, `a`.`title`, `a`.`askprice`, `a`.`description`, `a`.`picture` FROM (`mm_ads` as a) WHERE `a`.`category` = '227' AND `a`.`askprice` >= '0' AND `a`.`askprice` <= '144000' AND (MATCH(a.title) AGAINST ('+bmw +116' IN BOOLEAN MODE)) GROUP BY `a`.`id` ORDER BY `a`.`id` ASC LIMIT 30`
Поиск возвращает 0 строк. Зачем? Все входные строки («BMW», «116») являются минимальной длиной 3. Что я делаю неправильно?
С уважением, Марио