MYSQL — полнотекстовое совпадение с ошибкой для ‘NA’

#mysql #match-against

#mysql #сопоставление с

Вопрос:

У меня есть эта база данных (MySQL версии 5.7)

 DROP TABLE IF EXISTS test3_sim;
CREATE TABLE test3_sim (
ID INT not null,
texto VARCHAR(1024)
);

ALTER TABLE test3_sim ADD FULLTEXT(texto);

INSERT INTO test3_sim (id,texto) VALUES (1,'NA');
INSERT INTO test3_sim (id,texto) VALUES (2,'NA');
INSERT INTO test3_sim (id,texto) VALUES (3,'DUPLICATE');
INSERT INTO test3_sim (id,texto) VALUES (4,'OTH');
INSERT INTO test3_sim (id,texto) VALUES (5,'NOP');
INSERT INTO test3_sim (id,texto) VALUES (6,'NOP');
INSERT INTO test3_sim (id,texto) VALUES (7,null);
  

Я выполняю некоторый поиск с помощью полнотекстового синтаксиса в ЛОГИЧЕСКОМ РЕЖИМЕ, ища другое совпадение значений.
Я не могу понять, почему это приводит к сбою при поиске термина ‘NA’:
Результат этого запроса пуст:

 SELECT id, texto
FROM test3_sim
WHERE MATCH (texto) AGAINST ('NA' IN BOOLEAN MODE)
AND texto is not null
  

Но оно должно выводить первые 2 строки.

Все работает нормально для поиска ‘DUPLICATE’, ‘OTH’, ‘NOP’.

Есть ли конкретная причина, по которой запрос завершается ошибкой? Демонстрация здесь

Комментарии:

1. Не обращаясь к вашей конкретной проблеме, я замечу, что трудно протестировать ПОЛНЫЙ текст на таком крошечном наборе данных.

2. Для FULLTEXT по умолчанию ft_min_word_len установлено значение 3, что означает, что он не будет индексировать строки меньшей длины.

Ответ №1:

Согласно комментарию @Raymond Nijaland, это связано с тем, что для FULLTEXT по умолчанию установлено значение ft_min_word_len равное 3, что означает, что он не будет индексировать строки с длиной, которая меньше