Daylogs/DB

MySQL: Fulltext search에서 하이픈 캐릭터 사용하기

ohgyun 2017. 7. 27. 01:22
발생일: 2017.02.06

키워드: mysql, fulltext search, fulltext 검색, 하이픈, 대시, hypen, dash, -

문제:
MySQL의 BINARY MODE 의 Fulltext search에서 하이픈(hypen, 또는 대시, -) 캐릭터를 검색 대상에 포함하고 싶다.
어떻게 하면 될까?


해결책:

기본적으로 MySQL의 fulltext search는 letter, digits, ', _ 로 구성된 것을 단어로 본다.

-는 word break 역할을 해서, mysql에서는 -로 구분된 단어를 검색하는 것과 동일하게 동작한다.

따옴표로 묶어도 동일하다

"12-34"

"12 34"

"12+34"
"12~34"

모두 같은 결과를 리턴한다.


한 자리 검색어가 따옴표로 묶이는 경우, 검색어의 뒤에 있을 때에만 검색 대상이 된다.

"123 1" -> 123 1을 검색
"1 234" -> 1은 무시함. 234만 검색

"123 1" != "123 2" != "123 3"
"1 234" = "2 234" = "3 234"


Collation 파일을 직접 수정하는 방법이 있다고 하는데...
이건 아직 해보지 않았다. -_-


논의:

우린 AWS RDS를 쓰고 있는데, RDS에서는 Collation 파일의 수정은 허용하지 않는다.
1차 검색 결과를 코드 레벨에서 필터링하는 방법으로 우회했다.


참고:
반응형