Я создал таблицу MYSQL, используя следующий запрос:
CREATE TABLE IF NOT EXISTS `test` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`name`),
FULLTEXT INDEX(`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
И иметь следующие строки:
id | name
----------
1 | Acer Liquid Z6 Plus
2 | Acer Liquid Z6
3 | Acer Liquid X2
Я хочу использовать запрос MATCH
для поиска Acer Liquid Z6
, поэтому я запустил следующий запрос:
SELECT * FROM `test` WHERE MATCH(name) AGAINST('acer liquid z6' IN NATURAL LANGUAGE MODE)
Запрос по какой-то причине возвращает Acer Liquid Z6 Plus
в качестве первого результата:
id | name
----------
1 | Acer Liquid Z6 Plus
2 | Acer Liquid Z6
3 | Acer Liquid X2
Таким образом, полнотекстовый индекс не возвращает сначала наиболее релевантный результат. Есть ли более надежный способ поиска в индексе или принудительного соответствия, чтобы сначала получить наиболее релевантный результат?