2008-11-14 5 views
5

부울 모드에서 MySQL 전체 텍스트 검색을 사용하는 경우 + 및 -와 같은 특정 문자가 연산자로 사용됩니다. "C++"과 같은 것을 검색하면 +가 연산자로 해석됩니다. 이러한 특수 문자를 처리하는 가장 좋은 방법은 무엇입니까?MySQL 전체 텍스트 특수 문자 처리

현재 사용중인 방법은 데이터의 모든 + 문자를 _plus로 변환하는 것입니다. 또한 &, @ 및/및 # 문자를 텍스트 표현으로 변환합니다.

답변

4

MySQL의 전체 텍스트 검색을 사용하여 멋지게이를 수행 할 방법이 없습니다. 지금하고있는 일 (미리 정의 된 문자열로 특수 문자를 대체하는 것) 만 수행 할 수 있습니다.

대신 Sphinx Search을 사용해 볼 수 있습니다. 분명히 특수 문자를 이스케이프 처리하는 것을 지원하며, 모든 보고서는 기본 전체 텍스트 검색보다 훨씬 빠릅니다.

3

MySQL은 전체 텍스트 인덱스를 작성할 때 무시할 토큰이 상당히 잔인합니다. 나는 그것이 "C++"라는 용어를 접한 곳에서 플러스 문자를 제거하고 C 만 남기고 너무 짧기 때문에 무시할 것이라고 말하고 싶습니다. 단일 문자 단어를 포함하도록 MySQL을 구성 할 수도 있지만 최적화되지는 않았으므로 원하는 방식으로 더하기 문자를 처리 할 수 ​​있을지는 의문입니다.

이런 종류의 구성이 가능한 훌륭한 내부 검색 엔진이 필요한 경우 다양한 언어 including PHP (in the Zend framework)으로 이식 된 Lucene을 확인하십시오.

또는 텍스트 검색보다 '태그 지정'에 더 필요한 경우 다른 것이 더 적절할 수 있습니다.