变更文本配置对象。
ALTER TEXT CONFIGURATION [ owner.]config-name STOPLIST stoplist-string | DROP STOPLIST | { MINIMUM | MAXIMUM } TERM LENGTH integer | TERM BREAKER { GENERIC [ EXTERNAL NAME external-call ] | NGRAM } | PREFILTER EXTERNAL NAME external-call | DROP PREFILTER | SAVE OPTION VALUES [ FROM CONNECTION ] }
external-call : '[ operating-system: ]library-function-name@library-name[;...]'
operating-system : UNIX
STOPLIST 子句
此语句用于创建或替换构建文本索引时要忽略的术语列表。使用此文本配置对象时,查询中也会忽略在列表中指定的术语。使用空格将非索引字表隔离。例如,STOPLIST 'because about therefore only'
。非索引字表术语不能包含白空格。
不同语言的非索引字表示例位于 %SQLANYSAMP12%\SQLAnywhere\SQL 下。
非索引字表术语不得包含非数字字母字符。非索引字表长度必须小于 8000 个字节。
请认真考虑是否将术语置于非索引字表中。
MINIMUM TERM LENGTH 子句 使用 NGRAM 文本索引时将忽略在 MINIMUM TERM LENGTH 子句中指定的值。
文本索引中包含的术语的最小长度(以字符数表示)。构建或刷新文本索引时,将忽略长度短于该设置的术语。该选项的值必须大于 0。如果将此选项设置为大于 MAXIMUM TERM LENGTH,则 MAXIMUM TERM LENGTH 的值会自动进行调整到与新的 MINIMUM TERM LENGTH 值相等。
MAXIMUM TERM LENGTH 子句 对于 NGRAM 文本索引,MAXIMUM TERM LENGTH 子句可用于设置字符串分解后形成的 n 元语法词的长度。
对于 GENERIC 文本索引,MAXIMUM TERM LENGTH 子句可用于设置文本索引中包含的术语的最大长度(以字符为单位)。构建或刷新文本索引时,将忽略长度大于该设置的术语。MAXIMUM TERM LENGTH 的值必须小于或等于 60。如果将此项设置为小于 MINIMUM TERM LENGTH,则 MINIMUM TERM LENGTH 的值会自动进行调整到与新的 MAXIMUM TERM LENGTH 的值相等。
TERM BREAKER 子句 将列值分隔为术语时所用算法的名称。可以选择 GENERIC(缺省值)或 NGRAM。
GENERIC 对于 GENERIC,可以通过指定 TERM BREAKER GENERIC 来使用内置 GENERIC 术语断开器算法,也可以使用 TERM BREAKER GENERIC EXTERNAL NAME 子句来指定外部算法。
内置 GENERIC 算法将所有由一个或多个字母数字构成并由非字母数字分隔的字符串均视为一个术语。
指定 TERM BREAKER GENERIC EXTERNAL NAME 子句,以指定外部库中术语断开器函数的入口点。如果您对如何在对术语执行建立索引或查询操作之前将其断开有自定义要求(例如,想要将撇号视为术语的一部分,而非术语断开器),则此子句非常有用。
external-call 可指定多个函数和/或库,并可包含库的文件扩展名,此扩展名在 Windows 中通常为 .dll,在 Unix 中通常为 .so。在没有文件扩展名的情况下,数据库服务器缺省使用特定于平台的库文件扩展名。例如,EXTERNAL NAME 'TermBreakFunct1@myTBlib;Unix:TermBreakFunct2@myTBlib'
在 Windows 上调用 myTBlib.dll 中的 TermBreakFunct1 函数,在 Unix 上调用 myTBlib.so 中的 TermBreakFunct2 函数。
NGRAM 内置 NGRAM 算法将字符串分成 n 元语法词。一个 n 元语法词就是由较大字符串的 n 个字符组成的子串。如果未指定任何外部术语断开器,模糊(近似)匹配或者不使用空白字符或非字母数字字符分隔术语的文档需要 NGRAM 术语断开器。
PREFILTER EXTERNAL NAME 子句 指定 PREFILTER EXTERNAL NAME 子句,以指定外部库中前置过滤器函数的入口点。如果需要从二进制数据提取文本数据(例如 PDF),则此子句非常有用。如果想要建立索引的文本中包含想要在对数据建立索引之前删除的格式信息和/或图像(例如 HTML),则此子句也非常有用。
external-call 可指定多个函数和/或库,并可包含库的文件扩展名,此扩展名在 Windows 中通常为 .dll,在 Unix 中通常为 .so。在没有文件扩展名的情况下,数据库服务器缺省使用特定于平台的库文件扩展名。例如,PREFILTER EXTERNAL NAME 'PrefilterFunct1@myPreFilterlib;Unix:PrefilterFunct2@myPreFilterlib'
在 Windows 上调用 myPreFilterlib.dll 中的 PrefilterFunct1 函数,在 Unix 上调用 myPreFilterlib.so 中的 PrefilterFunct2 函数。
DROP PREFILTER 子句 使用 DROP PREFILTER 子句,使文本配置对象放弃使用指定的前置过滤库。这意味着数据库服务器构建使用此文本配置对象的索引时不再执行前置过滤。
SAVE OPTION VALUES 子句 创建文本配置对象时,当前 date_format、time_format、timestamp_format 和 timestamp_with_time_zone_format 数据库选项反映 DATE、TIME 和 TIMESTAMP 列如何与文本配置对象一起保存。使用 SAVE OPTION VALUES 子句更新为文本配置对象保存的选项值,以反映当前对连接有效的选项。
在更改术语长度设置之前,请阅读有关各种设置对建立了索引的对象以及解释查询术语的方式的影响。
文本索引依赖于文本配置对象。在使用此语句之前,必须先截断相关 AUTO 或 MANUAL REFRESH 文本索引,并删除所有 IMMEDIATE REFRESH 文本索引。
要查看文本配置对象的设置,请查询 SYSTEXTCONFIG 系统视图。
更改或删除外部前置过滤器或术语断开器时,需要 DBA 特权(只是文本配置对象的所有者还不够)。
对于所有其它情况,可以是文本配置对象的所有者或具有 DBA 特权。
自动提交
SQL/2008 服务商扩充。
以下语句创建了文本配置对象 maxTerm16,然后将术语的最大长度更改为 16:
CREATE TEXT CONFIGURATION maxTerm16 FROM default_char; ALTER TEXT CONFIGURATION maxTerm16 MAXIMUM TERM LENGTH 16; |
以下语句向 maxTerm16 配置对象添加了非索引字表:
ALTER TEXT CONFIGURATION maxTerm16 STOPLIST 'because about therefore only'; |
以下语句为 myTextConfig 文本配置对象配置外部术语断开器。指定 Windows 和 Unix 界面。
ALTER TEXT CONFIGURATION myTextConfig TERM BREAKER GENERIC EXTERNAL NAME 'my_termbreaker@termbreaker.dll;Unix:my_termbreaker@libtermbreaker_r.so' |
以下示例为 myTextConfig 文本配置对象配置外部前置过滤器。指定 Windows 和 Unix 界面。
ALTER TEXT CONFIGURATION myTextConfig PREFILTER EXTERNAL NAME 'html_xml_filter@html_xml_filter.dll;UNIX:html_xml_filter@libhtml_xml_filter_r.so'; |
以下示例删除 myTextConfig 文本配置对象的外部前置过滤器。
ALTER TEXT CONFIGURATION myTextConfig DROP PREFILTER; |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |