2009-10-18 4 views
10

3 글자 이하의 단어를 검색하기 위해 전체 텍스트 검색 (부울 모드)을 시도하고 있습니다.3 문자 이하의 단어를 MySQL 전체 텍스트 검색

현재 "NBA"와 같은 것을 검색하면 결과가 없습니다.

그러나 검색 용어에 와일드 카드 연산자 "*"를 추가하면 결과가 나옵니다.

my.ini에서 세 단어 한도를 제거 할 수 있다고 읽었지 만,이를 수행하는 더 좋은 방법이 있는지 궁금합니다.

답변

16

매뉴얼의이 섹션에서는 관심 있습니다 11.8.6. Fine-Tuning MySQL Full-Text Search (그것의 일부 인용) :

최소 및 ft_min_word_lenft_max_word_len 에 의해 정의 된 색인 할 단어의 최대 길이를 시스템 변수. 기본 최소값은 문자 4 개입니다. 기본 최대 값은 버전에 따라 다릅니다. 값을 변경하면 FULLTEXT 인덱스를 다시 작성해야합니다.

[mysqld] 
ft_min_word_len=3 

그런 다음 서버 및 를 다시 시작해야합니다 : 당신이 세 문자로 된 단어 검색 할 수 할 예를 들어, 당신은 옵션 파일에 다음 줄을 바꾸어 ft_min_word_len 변수를 설정할 수 있습니다
FULLTEXT 인덱스를 다시 작성하십시오.

이 가 이미 같은 읽을

+0

감사 파스칼 (당신은 내가 ;-) - 붙여 넣기를 복사하지 않은 더 많은 정보를 위해, 해당 페이지를 읽어야한다), 내가 가지고있는 생각은하는 것입니다 검색 구문의 길이를 검사하고 ft_min_word_len보다 작 으면 와일드 카드 * 한정자를 추가하는 PHP 함수를 사용합니다. 그보다 더 좋은 방법이 있는지 궁금합니다. –

+0

아, 죄송합니다. 이해 했어 ;; 나는 그것에 대해 많은 생각을 갖고 있지 않다 ... 좋은 성능이 좋을 지 확신하지 못한다. ;; sidenote와 마찬가지로 : 외부 색인 생성/검색 엔진 사용 (예 : solr 또는 sphinx)은 어떻습니까? –

+0

감사합니다, 스핑크스에 대해 들어 봤지만 아직 내 머리를 감싸는 시간이 없었습니다. 곧 살펴 보겠습니다. –

관련 문제