2016-12-17 1 views
0

는의 테이블 노드가 MariaDb에서 전체 텍스트 인덱스와 VARCHAR 컬럼 설명이 있다고 가정합시다 (10)밑줄으로 전체 텍스트 검색 단어 경계 (10)

쿼리

select description from node where match(description) against('night'); 

설명을 일치합니다 값은

Night-and-day 
What-a-wonderful-night 
What a wonderful night 

과 같지만 일치하지 않습니다.

What_a_wonderful_night 

내 질문 : space() 및 하이픈 (-)은 단어 경계로 간주되지만 밑줄 (_)이 아닌 것으로 보입니다. 밑줄을 단어 경계로 만드는 구성이나 쿼리 내부의 방법이 있습니까?

답변

0
는 ha_innobase.cc에서 매크로 true_word_char()을 변경

:

-#define true_word_char(c, ch) ((c) & (_MY_U | _MY_L | _MY_NMR) || (ch) == '_') 
+#define true_word_char(c, ch) ((c) & (_MY_U | _MY_L | _MY_NMR)) 

및 MariaDB를 다시 빌드합니다.

+0

밑줄 검사가 매크로 true_word_char에 하드 코딩되어 있기 때문에 추가 문자 집합 또는 데이터 정렬을 추가해도 작동하지 않습니다. –