10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

MySQL 5.7参考手册/.../ 为全文索引添加自定义排序规则

12.10.7为全文索引添加自定义排序规则

本节介绍如何使用内置的全文解析器为全文搜索添加用户定义的排序规则。样本整理就像latin1_swedish_ci但对待“- - -”字符作为字母而不是作为标点字符,以便它可以作为单词字符进行索引。中给出了关于添加排序规则的一般信息第10.14节“向字符集添加排序规则”;假设您已经阅读了本文并熟悉所涉及的文件。

若要为全文索引添加排序规则,请使用以下过程。这里的说明为简单字符集添加了一个排序规则,如中所讨论的第10.14节“向字符集添加排序规则”,可以使用描述字符集属性的配置文件创建。对于Unicode等复杂字符集,请使用描述字符集属性的C源文件创建排序规则。

  1. 对象中添加排序规则Index.xml文件。中给出了用户定义的排序规则允许的id范围第10.14.2节“选择排序规则ID”.该ID必须是未使用的,因此如果系统上已经使用了该ID,则选择与1025不同的值。

    <字符集名称= " latin1”中的一个>… 
  2. 中声明排序规则的排序顺序latin1.xml文件。在这种情况下,可以从其中复制订单latin1_swedish_ci

    <排序规则名= " latin1_fulltext_ci " > <地图> 00 01 02年03 04 05 06 07年08年09年0 0 0 0 b c d e 0 f 10 11 12 13 14 15 16 17 18 19 1 1 1 b c 1 d e 1 f 20 21日22日23日24日25日26日27 28 29日2 2 b 2 c 2 d 2 e 2 f 30 31 32 33 34 35 36 37 38 39 3 3 3 b c 3 d 3 e 3 f 40 41 42 43 44 45 46 47 48 49 4 4 b 4 c d e 4 f 50 51 52 53 54 55 56 57 58 59 5 5 5 b c 5 d 5 e 5 f 60 41 42 43 44 45 46 47 48 49 4 4 b 4 c d e 4 f 50 51 52 53 54 55 56 57 58 59 5一7 b 7 c 7 d 7 e 7 f 80 81 82 83 84 85 86 87 88 89 8 8 8 b c 8 d 8 e 8 f 90 91 92 93 94 95 96 9798 99 9 9 b 9 c 9 d 9 e 9 f A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC广告AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9英航BB BC BD BF 41 41 41 41 5 c 5 b 5 c 43 45岁45岁49 49 49 49 44 4 e 4 4 4 f f 5 d D7 D8 55 55 55 59 59 DE DF 41 41 41 41 5 c 5 b 5 c 43 45岁45岁49 49 49 49 44 4 e 4 4 4 f f 5 d F7 D8 55 55 55 59 59 DE FF < /地图> < /排序>
  3. 修改ctype数组中latin1.xml.更改与0x2D对应的值(这是用于“- - -”字符)从10(标点符号)到01(大写字母)。在下面的数组中,这是第4行向下的元素,从末尾开始的第三个值。

      00 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 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 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 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 100110 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 02年10 10 10 10 10 10 01 01 00 1 00 00 10 10 10 10 10 10 10 10 10 02年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 01010110 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  
  4. 重新启动服务器。

  5. 要使用新的排序规则,请将其包含在将要使用它的列的定义中:

    删除表查询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;查询OK, 0行受影响(0.47秒)
  6. 测试排序规则以验证连字符是否被认为是一个单词字符:

    mysql >插入t1值  ('----'),('....'),(' abcd”);查询OK, 3行影响(0.22秒)记录:3重复:0警告:0 mysql> SELECT * FROM t1 WHERE MATCH a AGAINST ('----' IN BOOLEAN MODE);+------+ | 一个  | +------+ | ---- | +------+ 1行集(0.00秒)