etx_CreateCharSet() 例程将创建用户定义字符集。
etx_CreateCharSet (charset_name, file_name)
元素 | 用途 | 数据类型 |
---|---|---|
charset_name | 用户定义字符集的名称。如果输入的名称超过 18 个字符,该名称将自动截断至 18 个字符。 | CHAR (18) |
file_name | 文本搜索引擎从中装入字符集的操作系统文件的绝对路径名。该文件可以位于服务器或客户机机器上。首先搜索的是客户机机器。 | LVARCHAR |
无。
当您针对列创建 etx 索引时,可以指定用来对文本数据创建索引的字符集。字符集指示要对哪些字母建立索引;文本数据中任何未在字符集内列出的字符都将转换为空格。使用 CHAR_SET 索引参数来指定字符集的名称。必须首先创建用户定义字符集,然后才能使用它来创建 etx 索引。
GBase 8s Excalibur Text Search DataBlade 模块提供了三种内置字符集:ASCII、ISO 和 OVERLAP_ISO。每种内置字符集都仅包含字母数字字符,并将小写字母映射为大写字母。这足以满足大多数文本搜索的需求。有关这三种内置字符集的完整描述,请参阅字符集。
但是,您有时可能需要对非字母数字字符建立索引,或需要区分小写和大写字母。在这些情况下,必须定义您自己的字符集。
要定义您自己的字符集,首先需要创建一个操作系统文件,以指定要建立索引的字符。接下来的部分将详细描述该操作系统文件的结构。
要使用用户定义字符集,请在 CREATE INDEX 语句的 CHAR_SET 索引参数中指定其名称。
操作系统文件包含 16 行,每行均有 16 个十六进制数,加上包含注释的可选行。每个位置与一个 ASCII 字符对应。如果希望对该位置中的字符建立索引,请输入该字符的十六进制值。如果不希望对该字符建立索引,请输入 00。
字符集中的 ISO 8859-1 表列出了在创建操作系统文件时可作为引用使用的 ISO 8859-1 字符集。
注释以斜杠、短线或 # 字符开头,可以出现在文件的任意位置。
# Character set that indexes hyphens and / alphanumeric characters. All lower case letters \ are mapped to upper case. - Note the different ways of specifying that a # line is a comment. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2D 00 2F 30 31 32 33 34 35 36 37 38 39 00 00 00 00 00 00 00 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 00 5C 00 00 5F 00 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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
这类似于内置 ASCII 字符集,不同之处在于对连字符、下划线、正斜杠和反斜杠也建立了索引,而不是将其转换为空格。之所以对这四个字符建立索引,是因为矩阵中每个字符的位置包含其十六进制表示法:0x2D、0x5F、0x5C 和 0x2F。
通过在小写字母位置上指定大写十六进制值,将小写字母映射为大写字母。
例如,大写字母 A 的十六进制值为 0x41。矩阵中大写字母 A 的位置包含十六进制值 0x41,因此对大写字母 A 建立的索引为大写的 A。
但是,矩阵中小写字母 a 的位置也包含十六进制值 0x41(表示大写的 A),而不是小写字母 a 的实际十六进制表示 0x61。这样,小写字母 a 就映射为大写的 A,即,将小写 a 视作大写 A 来建立索引。对于 a 到 z 和 A 到 Z 的所有字母同样如此。
有关 ISO 8859-1 表的更多信息,请参阅 ISO 8859-1 字符集。
EXECUTE PROCEDURE etx_CreateCharSet ('my_charset', '/local0/excal/my_char_set_file');
搜索引擎从操作系统上名为 /local0/excal/my_char_set_file 的文件装入 my_charset 的内容并进行存储。