sourcecode

MySQL 전체 텍스트 부울 모드 와일드카드로 두 글자 단어 검색

copyscript 2022. 9. 25. 00:18
반응형

MySQL 전체 텍스트 부울 모드 와일드카드로 두 글자 단어 검색

짧은 단어를 검색해도 결과가 나오지 않는 문제를 해결하려고 합니다.MariaDB 10.0.34를 실행하고 있습니다.ft_min_word_len로 설정하다.2다음과 같은 결과를 얻을 수 있습니다.

CREATE TABLE `ft_test` (
  `name` varchar(128) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `ft_test` ADD FULLTEXT KEY `name` (`name`);
INSERT INTO `ft_test` (`name`) VALUES ('aa'),('bb'),('abc'),('efgh'),('ab'),('abcd');

SELECT * FROM `ft_test` WHERE MATCH (name) AGAINST ("+ab*" IN BOOLEAN MODE);
-- Returns "abc" and "abcd" but NOT "ab".

SELECT * FROM `ft_test` WHERE MATCH (name) AGAINST ("+aa*" IN BOOLEAN MODE);
-- No results

SELECT * FROM `ft_test` WHERE MATCH (name) AGAINST ("+bb*" IN BOOLEAN MODE);
-- No results

SELECT * FROM `ft_test` WHERE MATCH (name) AGAINST ("+abc*" IN BOOLEAN MODE);
-- Returns "abc" and "abcd".

SELECT * FROM `ft_test` WHERE MATCH (name) AGAINST ("+abcd*" IN BOOLEAN MODE);
-- Returns "abcd".

설명서에 와일드카드라고 써있네*문자는 0 또는 그 이상의 글자와 일치할 수 있습니다.+abc*결과에는abc노를 젓다+abcd*를 포함합니다.abcd행은 2글자 검색이 2글자 행과 일치하지 않습니다.또한 설명서에서 알 수 있듯이 위의 어느 것도 스톱워드가 아닙니다.

왜 이런 일이 생기는 건가요?무슨 일이야?

언급URL : https://stackoverflow.com/questions/51255878/mysql-fulltext-boolean-mode-search-for-two-letter-words-with-wildcards

반응형