创建 bts 索引时,可以使用 canonical_maps 索引参数指定规范映射字符串。
有关完整语法,请参阅 bts 访问方法语法。下面是 canonical_maps 索引参数的语法段:
元素 | 描述 |
---|---|
column | 包含规范映射字符串的列的名称。 |
directory | 规范映射文件的目录路径。 |
filename | 包含规范映射字符串的文件的名称。 |
table | 包含具有规范映射字符串的列的表的名称。 |
original_char | 要在建立索引与搜索期间被映射的字符串替换的字符。 |
mapped_string | 建立索引期间原始字符要替换为的字符。 |
使用规范映射可通过字符串的规范表示使字符平等,从而提高查询的精确度。
在建立索引与搜索期间,缺省情况下会将所有字符变换为小写,因此,原始字符中的所有大写字符必须映射到映射字符串中的小写字符。对于某些语言环境,带变音符或连字符的字母的大写字符视为与其对应的小写字符不同。对于这些语言环境,必须同时将带变音符或连字符的大写和小写字符映射到同一个小写字母。不能在映射的字符串中指定大写字母。
空格相当重要。
将对映射的字符建立索引并进行搜索,因此,返回结果时,对于具有原始字符的词语而言,这些原始字符将视为与其对应的映射字符相同。例如,如果将字符 "ù" 映射到字母 "u",那么 "Raùl"、"Raul" 都会作为 "raul" 建立索引。同样,如果搜索 "Raùl" 或 "Raul",将返回包含 "Raùl" 或 "Raul" 的所有行。
以下示例显示如何使用 canonical_maps 参数创建 bts 索引。
CREATE INDEX docs_idx on repository (document_text bts_lvarchar_ops) USING bts (canonical_maps="({ù}:{u},{æ}:{ae})") IN mysbspace;
以下示例说明字符映射的文件。某些映射的字符包含多个原始字符。此示例假定使用语言环境 en_us.8859-1,该语言环境不将带变音符的大写字母指定为大写。因此,原始字符中同时包含字母的大小写版本。
{Ææ}:{ae}, {Œœ}:{oe}, {Ññ}:{ny}, {[ÀÁÂÄÃÅàáâãåâ]}:{a}, {[ÈÉÊËèéêë]}:{e}, {[ÌÍÎÏìíîï]}:{i}, {[ÒÓÔÖÕòóôöõ]}:{o}, {[ÙÚÛÜùúûü]}:{u}, {Çç}:{c}, {Øø}:{o}, {Ýý}:{y}, {ß}:{ss}, {mc }:{mc}
CREATE INDEX docs_idx on repository (document_text bts_lvarchar_ops) USING bts (canonical_maps="file:/tmp/canon") IN mysbspace;