12.9.7 전문 인덱싱 데이터 정렬 추가
이 섹션에서는 전체 텍스트 검색에 대한 새 데이터 정렬을 추가하는 방법을 설명합니다. 샘플 데이터 정렬은 latin1_swedish_ci
와 비슷하지만, '-'
문자는 단어 문자로 인덱싱 할 수 있도록 구두점이 아닌 문자로 처리됩니다. 데이터 정렬의 추가에 대한 일반적인 정보는 섹션 10.4 "문자 세트에 데이터 정렬 추가" 에서 설명되어 있습니다. 이 정보를 참조하여 관련 파일을 잘 이해하는 것이 전제가되고 있습니다.
전문 인덱싱 데이터 정렬을 추가하려면 다음 단계를 사용합니다.
데이터 정렬을
Index.xml
파일에 추가합니다. 데이터 정렬 ID는 미사용 할 필요가 있기 때문에 ID가 이미 시스템에서 얻을 수있는 경우 1000 이외의 값을 선택하십시오.<charset name="latin1"> ... <collation name="latin1_fulltext_ci" id="1000"/> </charset>
latin1.xml
파일에서 데이터 정렬의 정렬 순서를 선언합니다. 이 경우latin1_swedish_ci
에서 순서를 복사 할 수 있습니다.<collation name="latin1_fulltext_ci"> <map> 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF 41 41 41 41 5C 5B 5C 43 45 45 45 45 49 49 49 49 44 4E 4F 4F 4F 4F 5D D7 D8 55 55 55 59 59 DE DF 41 41 41 41 5C 5B 5C 43 45 45 45 45 49 49 49 49 44 4E 4F 4F 4F 4F 5D F7 D8 55 55 55 59 59 DE FF </map> </collation>
latin1.xml
에서ctype
배열을 변경합니다. 0x2D ('-'
문자 코드)에 해당하는 값을 10 (구두점)에서 01 (소문자)로 변경합니다. 다음 배열에서 이것은 4 번째 줄의 요소에서 마지막에서 3 번째 값입니다.<ctype> <map> 00 20 20 20 20 20 20 20 20 20 28 28 28 28 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 10 10 10 10 10 10 10 10 10 10 10 10 01 10 10 84 84 84 84 84 84 84 84 84 84 10 10 10 10 10 10 10 81 81 81 81 81 81 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 10 10 10 10 10 10 82 82 82 82 82 82 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 10 10 10 10 20 10 00 10 02 10 10 10 10 10 10 01 10 01 00 01 00 00 10 10 10 10 10 10 10 10 10 02 10 02 00 02 01 48 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 10 01 01 01 01 01 01 01 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 10 02 02 02 02 02 02 02 02 </map> </ctype>
서버를 다시 시작합니다.
새로운 데이터 정렬을 사용하려면 사용되는 컬럼의 정의에 추가합니다.
mysql>
DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected (0.13 sec) mysql>CREATE TABLE t1 (
a TEXT CHARACTER SET latin1 COLLATE latin1_fulltext_ci,
FULLTEXT INDEX(a)
) ENGINE=InnoDB;
Query OK, 0 rows affected (0.47 sec)데이터 정렬을 테스트하여 하이픈 단어 문자로 간주되는지 확인합니다.
mysql>
INSERT INTO t1 VALUEs ('----'),('....'),('abcd');
Query OK, 3 rows affected (0.22 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql>SELECT * FROM t1 WHERE MATCH a AGAINST ('----' IN BOOLEAN MODE);
+------+ | a | +------+ | ---- | +------+ 1 row in set (0.00 sec)