SQL Anywhere 提供两种缺省文本配置对象,即与 CHAR 数据一起使用的 default_char 以及与 NCHAR 和 CHAR 数据一起使用的 default_nchar。请注意,尽管 default_nchar 可以与任何数据一起使用,但需要执行字符集转换。有关 default_char 和 default_nchar 文本配置对象设置的信息,请参见缺省文本配置对象。
您可以通过使用 sa_char_terms 和 sa_nchar_terms 系统过程测试文本配置对象是如何影响术语断开的。请参见sa_char_terms 系统过程和sa_nchar_terms 系统过程。
下表说明了文本配置对象的设置是如何影响索引内容,以及使用文本配置的文本索引如何解释全文搜索查询。相关示例,请参见文本配置对象示例。
外部前置过滤器算法 (PREFILTER) 前置过滤是从 Word、PDF、HTML 或 XML 之类的文件中提取文本数据的过程。在文本索引环境中,前置过滤允许只提取想要索引的数据,而避免索引不必要的内容,例如 HTML 标记。对于某些文档类型(例如 Microsoft Word 文档),需要使用前置过滤发挥全文索引的有用功能。
SQL Anywhere 不提供内置的前置过滤器功能。但是,您可以创建外部前置过滤器库,根据需要执行前置过滤,然后修改文本配置对象来指向它。
下表说明了 PREFILTER EXTERNAL NAME 的值对文本索引和查询字符串处理方式的影响。
文本索引 | 查询字符串 |
---|---|
GENERIC 和 NGRAM 文本索引 外部前置过滤器获取一个输入值(文档)并根据前置过滤器库指定的规则进行过滤。结果文本将在建立或更新文本索引之前传递给术语断开器。 |
GENERIC 和 NGRAM 文本索引 查询字符串不通过前置过滤器,因此 PREFILTER EXTERNAL NAME 子句的设置不会影响查询字符串。 |
另请参见:外部前置过滤器库和PREFILTER EXTERNAL NAME 子句,ALTER TEXT CONFIGURATION 语句。
SQL Anywhere 安装的 ExternalLibrariesFullText 目录中包含前置过滤器和术语断开器示例代码供您研究。该目录可在 Samples 目录下找到。关于 samples 目录的位置,请参见示例目录。
术语断开器算法 (TERM BREAKER) TERM BREAKER 设置指定将字符串分解为术语时所使用的算法。可以选择 GENERIC 以存储术语,或选择 NGRAM 以存储 n 元语法词。对于 GENERIC,可以使用内置术语断开器算法,或外部术语断开器。请参见TERM BREAKER 子句,ALTER TEXT CONFIGURATION 语句。
下表说明了 TERM BREAKER 的值对文本索引和查询字符串处理方式的影响。
文本索引 | 查询字符串 |
---|---|
|
当分析 CONTAINS 查询时,数据库服务器将从查询字符串提取关键字和特殊字符,然后将术语断开器算法应用到其余的术语。例如,如果查询字符串是 有关全文搜索中关键字和特殊字符的更多信息,请参见CONTAINS 搜索条件。
|
如果未定义,则会从缺省文本配置对象设置中获取 TERM BREAKER 的缺省值。如果在缺省文本配置对象中未定义术语断开器,则会使用内部术语断开器。请参见缺省文本配置对象。
最小术语长度设置 (MINIMUM TERM LENGTH) MINIMUM TERM LENGTH 设置指定插入到索引中的术语或在全文查询中搜索的术语的最小长度(以字符为单位)。MINIMUM TERM LENGTH 不可用于 NGRAM 文本索引。
MINIMUM TERM LENGTH 对于前缀搜索有特殊含义。请参见前缀搜索。
MINIMUM TERM LENGTH 的值必须大于 0。如果将其设置为大于 MAXIMUM TERM LENGTH,则 MAXIMUM TERM LENGTH 会自动调整为与 MINIMUM TERM LENGTH 相等。
如果未定义,则会从缺省文本配置对象的设置中获取 MINIMUM TERM LENGTH 的缺省值,通常为 1。请参见缺省文本配置对象。
下表说明了 MINIMUM TERM LENGTH 的值对文本索引和查询字符串处理方式的影响。
文本索引 | 查询字符串 |
---|---|
GENERIC 文本索引 对于 GENERIC 文本索引,长度小于 MINIMUM TERM LENGTH 的单词将不会包含在文本索引之中。 NGRAM 文本索引 对于 NGRAM 文本索引,将忽略此设置。 |
GENERIC 文本索引 查询 GENERIC 文本索引时,将忽略长度小于 MINIMUM TERM LENGTH 的查询术语,因为它们不会在文本索引中存在。 NGRAM 文本索引 MINIMUM TERM LENGTH 的设置对 NGRAM 文本索引上的全文查询没有影响。 |
最大术语长度设置 (MAXIMUM TERM LENGTH) 根据术语断开器算法的不同,MAXIMUM TERM LENGTH 设置的使用方法也不同。
MAXIMUM TERM LENGTH 的值必须小于或等于 60。如果将其设置为小于 MINIMUM TERM LENGTH,则 MINIMUM TERM LENGTH 会自动调整为与 MAXIMUM TERM LENGTH 相等。
此设置的缺省值从缺省文本配置对象的设置中获得,通常为 20。请参见缺省文本配置对象。
如果未定义,则会从缺省文本配置对象的设置中获取 MAXIMUM TERM LENGTH 的缺省值,通常为 20。请参见缺省文本配置对象。
下表说明了 MAXIMUM TERM LENGTH 的值对文本索引和查询字符串处理方式的影响。
文本索引 | 查询字符串 |
---|---|
GENERIC 文本索引 对于 GENERIC 文本索引,MAXIMUM TERM LENGTH 指定插入到文本索引中的术语的最大长度(以字符为单位)。 NGRAM 文本索引 对于 NGRAM 文本索引,MAXIMUM TERM LENGTH 用于确定术语分解后形成的 n 元语法词的长度。如何选择适当的 n 元语法词长度取决于相应的语言。对于英文,典型值为 4 个或 5 个字符;对于中文,典型值为 2 个或 3 个字符。 |
GENERIC 文本索引 对于 GENERIC 文本索引,将忽略长度大于 MAXIMUM TERM LENGTH 的查询术语,因为它们不会在文本索引中存在。 NGRAM 文本索引 对于 NGRAM 文本索引,查询术语将分解成长度为 n 的 n 元语法词,其中 n 与 MAXIMUM TERM LENGTH 的值相同。然后数据库服务器使用 n 元语法词搜索文本索引。长度小于 MAXIMUM TERM LENGTH 的术语将被忽略,因为它们与文本索引中的 n 元语法词不匹配。因此,除非参数是长度为 n 的前缀,否则邻近搜索不会工作。 |
非索引字表设置 (STOPLIST) 非索引字表设置指定不得对其建立索引的术语。
如果未定义,此设置的缺省值从缺省文本配置对象的设置中获得,>它通常带有一个空的非索引字表。请参见缺省文本配置对象。
STOPLIST 对文本索引的影响 | STOPLIST 对查询术语的影响 |
---|---|
GENERIC 文本索引 对于 GENERIC 文本索引,非索引字表中的术语不会插入到文本索引之中。 NGRAM 文本索引 对于 NGRAM 文本索引,由非索引字表中的术语形成的 n 元语法词不会包含在文本索引之中。 |
GENERIC 文本索引 对于 GENERIC 文本索引,将忽略非索引字表中的查询术语,因为它们不会在文本索引中存在。 NGRAM 文本索引 非索引字表中的术语分解为 n 元语法词,然后将 n 元语法词用于术语过滤。类似地,查询术语将分解为 n 元语法词,然后删除任何与非索引字表中的 n 元语法词相匹配的项目,因为它们不会在文本索引中存在。 |
执行分析时,文本配置对象中的设置将应用于非索引字表。也就是说会应用指定的术语断开器和最小/最大长度设置。
NGRAM 文本索引中的非索引字表可能导致意外的结果,因为所储存的非索引字表是 n 元语法词的形式,而不是指定的非索引字表术语形式。例如,对于 MAXIMUM TERM LENGTH 为 3 的 NGRAM 文本索引,如果指定 [STOPLIST 'there'
],则以下 n 元语法词将存储为非索引字表:the her ere。这会影响查询任何包含 n 元语法词 the、her 和 ere 的术语的能力。
指定字符串文字时的限制同样适用于非索引字表。例如,必须对撇号进行转义等。有关格式化字符串文字的详细信息,请参见字符串文字。
示例目录包含装载多种语言的非索引字表的示例代码。建议仅对 GENERIC 文本索引使用这些示例非索引字表。有关示例目录的位置,请参见示例目录。
日期、时间和时间戳格式设置 创建文本配置对象时,当前连接的 date_format、time_format、timestamp_format 和 timestamp_with_time_zone_format 选项将与文本配置对象一同存储。这些选项的值控制如何为使用文本配置对象构建的文本索引格式化 DATE、TIME 和 TIMESTAMP 列。不能显式设置文本配置对象的这些选项值;其设置反映了创建文本配置对象的连接。但可以更改这些选项。请参见如何修改文本配置对象和ALTER TEXT CONFIGURATION 语句的 SAVE OPTION VALUES 子句。
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |