Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » 全文搜索 » 文本配置对象概念和参考 » 创建或变更文本配置对象时指定的内容

 

TERM BREAKER 子句 - 指定术语断开器算法

TERM BREAKER 设置指定将字符串分解为术语时所使用的算法。可以选择 GENERIC 以存储术语,或选择 NGRAM 以存储 n 元语法词。对于 GENERIC,可以使用内置术语断开器算法,或外部术语断开器。

下表说明了 TERM BREAKER 的值对文本索引和查询字符串处理方式的影响。

文本索引 查询字符串
  • GENERIC 文本索引   GENERIC 文本索引的性能可能高于 NGRAM 文本索引。但无法对 GENERIC 文本索引执行模糊搜索。

    使用内置算法构建 GENERIC 文本索引时,数据库服务器会将出现在非字母数字字符之间的字母数字字符组处理为术语,并为其指定位置。

    当使用术语断开器外部库构建 GENERIC 文本索引时,术语及其位置由外部库定义。

    术语断开器识别术语后,超出术语长度限制的术语和在非索引字表中找到的术语将只进行计数而不插入到文本索引当中。

  • NGRAM 文本索引   n 元语法词 是一组长度为 n 的字符,其中 n 是 MAXIMUM TERM LENGTH 的值。

    构建 NGRAM 文本索引时,数据库服务器会将非字母数字字符之间的任意一组字母数字字符处理为术语。定义术语后,数据库服务器将术语分解为 n 元语法词。这样便可放弃长度小于 n 的术语以及非索引字表中的 n 元语法词。

    例如,对于 MAXIMUM TERM LENGTH 为 3 的 NGRAM 文本索引,字符串 'my red table' 在文本索引中表示为以下 n 元语法词:red tab abl ble。

    对于 n 元语法词,则存储 n 元语法词的位置信息,而不是原始术语的位置信息。

当分析 CONTAINS 查询时,数据库服务器将从查询字符串提取关键字和特殊字符,然后将术语断开器算法应用到其余的术语。例如,如果查询字符串是 'ab_cd* AND b*',则会提取 * 和关键字 AND,并且将字符串 ab_cd 和 b 交给术语断开器算法分别分析。

  • GENERIC 文本索引   查询 GENERIC 文本索引时,将按照术语已建立索引的方式来处理查询字符串中的术语。通过比较查询术语和文本索引中的术语来执行匹配。

  • NGRAM 文本索引   查询 NGRAM 文本索引时,将按照术语已建立索引的方式来处理查询字符串中的术语。通过比较查询术语中的 n 元语法词和索引术语中的 n 元语法词来执行匹配。

如果未定义,则会从缺省文本配置对象设置中获取 TERM BREAKER 的缺省值。如果在缺省文本配置对象中未定义术语断开器,则会使用内部术语断开器。

 另请参见