2010-05-20 4 views
0

MySQL에서 대소 문자를 구분할 때 문제가 발생했습니다. FULLTEXT 검색.MySQL FULLTEXT aggravation

나는 에있는 MySQL doco의 FULLTEXT 예제를 방금 따라갔습니다. 나는 ... 참조의 편의를 위해 여기에 게시합니다

CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 
title VARCHAR(200), 
body TEXT, 
FULLTEXT (title,body) 
); 

INSERT INTO articles (title,body) VALUES 
('MySQL Tutorial','DBMS stands for DataBase ...'), 
('How To Use MySQL Well','After you went through a ...'), 
('Optimizing MySQL','In this tutorial we will show ...'), 
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'), 
('MySQL vs. YourSQL','In the following database comparison ...'), 
('MySQL Security','When configured properly, MySQL ...'); 

SELECT * FROM articles 
WHERE MATCH (title,body) 
AGAINST ('database' IN NATURAL LANGUAGE MODE); 

... 내 문제는 예 가 (첫 번째와 다섯 번째 행을 반환 SELECT 것을 알 수 있다는 것입니다 '..DataBase을 ...'와 ' ..database .. ')하지만 한 행 ('데이터베이스 ') 만받습니다!

이 예제에서는 예제의 테이블에 어떤 데이터 정렬이 있었는지 보여주지 않지만 예제 테이블의 제목과 본문 열에 latin1_general_cs가 있습니다.

MySQL의 버전은 5.1.39-log이고 연결 순서는 utf8_unicode_ci입니다.

내 경험이 설명서의 예와 다른 이유를 누군가가 제안 할 수 있다면 정말 감사 할 것입니다.

조언이 필요하면 감사드립니다.

답변

1

기본 정렬은 어딘가에서 대소 문자를 구분합니다. 테이블에 latin1_general_cs로 끝나는 것을 보았습니다. 아마 시작할 때?

당신은 나를 위해 제공

show variables like 'collation%' 

사용하여 확인할 수 있습니다

+----------------------+-------------------+ 
| Variable_name  | Value    | 
+----------------------+-------------------+ 
| collation_connection | latin1_swedish_ci | 
| collation_database | latin1_swedish_ci | 
| collation_server  | latin1_swedish_ci | 
+----------------------+-------------------+ 
3 rows in set (0.00 sec) 

그래서 예 내 서버로 광고 작동

.

테이블에있는 열의 데이터 정렬은 적절하게 데이터베이스, 서버 또는 테이블 데이터 정렬로 기본 설정됩니다. 은 즉, 열 수준에서 지정된 데이터 정렬 등

열 정렬 데이터베이스 수준을 무시 테이블 수준에서 어떤을 무시하는 것은 specified using this syntax입니다 :

col_name {CHAR | VARCHAR | TEXT} (col_length) 
    [CHARACTER SET charset_name] 
    [COLLATE collation_name] 

이 피투성이 자세한 내용은 §9.1 of the MySQL documentation를 참조하십시오.

+0

대단히 감사합니다. 설명해 주셔서 대단히 감사합니다. 지금은 구체적으로 정렬/문자로 설정 설정 테이블을 다시했습니다 는 표 기사 ( 아이디 INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY를 생성 제목 VARCHAR (200), 본문, FULLTEXT (제목, 본문) ) 기본 문자 집합 latin1 COLLATE latin1_general_ci; ... 이제 쿼리가 올바르게 작동해야합니다. 도와 주셔서 대단히 감사합니다. – shearichard

관련 문제