2014-01-23 7 views
2

MyISAM 테이블에서 전체 텍스트 색인을 사용하여 해시 태그를 검색하는 방법이 있어야합니다. 기본 설정은 다음을 수행합니다.해시 태그에 대한 MySQL 전체 텍스트 검색 (색인에서 # 기호 포함)

textfield 
hashtag 
#hashtag 
#two #hashtag #hashtag 

SELECT * FROM table WHERE MATCH(textfield) AGAINST ('#hashtag') 
> | hashtag    | 
> | #hashtag    | 
> | #two #hashtag #hashtag | 

대신 2 번째 및 3 번째 행만 반환해야합니다. 해시 태그는 단어 구분 기호로 취급되므로 검색을 시작하기 전에 "제거"됩니다. 단어의 일부로 #을 포함하는 용어에 대한 색인 생성 및 검색을 활성화하려면 어떻게해야합니까? Fine-Tuning MySQL Full-Text Search 아래의 문서로

답변

2

:

다음 목록에 설명 된대로 여러 가지 방법으로 단어 문자로 간주되는 문자 세트를 변경할 수 있습니다. 수정 한 후 모든 FULLTEXT 인덱스가 들어있는 각 테이블의 인덱스를 다시 작성하십시오. 하이픈 문자 ('-')를 단어 문자로 처리한다고 가정합니다. 다음 방법 중 하나를 사용

  • 는 MySQL의 소스를 수정 storage/myisam/ftdefs.h에서 true_word_char()misc_word_char() 매크로를 참조하십시오. 해당 매크로 중 하나에 '-'을 추가하고 MySQL을 다시 컴파일하십시오.

  • 문자 집합 파일 수정 : 다시 컴파일 할 필요가 없습니다. true_word_char() 매크로는 문자와 숫자를 다른 문자와 구별하기 위해 "문자 유형"테이블을 사용합니다. . 문자 집합 XML 파일 중 하나에서 <ctype><map> 배열의 내용을 편집하여 '-'이 "문자"임을 지정하고 FULLTEXT 색인에 주어진 문자 집합을 사용할 수 있습니다. 배열 형식이 <ctype><map> 인 경우 Section 10.3.1, “Character Definition Arrays”을 참조하십시오.

  • 인덱스 된 열에서 사용하는 문자 집합에 대해 새 데이터 정렬을 추가하고 해당 데이터 정렬을 사용하도록 열을 변경합니다. 데이터 정렬 추가에 대한 일반적인 내용은 Section 10.4, “Adding a Collation to a Character Set”을 참조하십시오. 전체 텍스트 인덱싱 관련 예제는 Section 12.9.7, “Adding a Collation for Full-Text Indexing”을 참조하십시오.