반응형
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
반응형
'sourcecode' 카테고리의 다른 글
PHP에서 두 문자열의 차이를 강조 표시합니다. (0) | 2022.09.26 |
---|---|
Google Maps API v3: 모든 마커를 제거하는 방법 (0) | 2022.09.26 |
Laravel 테이블에서 모든 행(소프트 삭제도 가능)을 가져오려면 어떻게 해야 합니까? (0) | 2022.09.25 |
유형 개체 'datetime.datetime'에 특성 'datetime'이 없습니다. (0) | 2022.09.25 |
Javascript에서 CSS를 추가하려면 어떻게 해야 하나요? (0) | 2022.09.25 |