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

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - SQL 用法 » 查询和数据修改 » 全文搜索 » 高级:外部术语断开器和前置过滤器库

 

使用外部术语断开器或前置过滤器库的原因

SQL Anywhere 中的全文搜索使用文本索引执行。建立文本索引的列中的每个值都称为文档。创建文本索引后,在文本索引的文本配置中指定的内置术语断开器会处理每个文档,以确定文档中包含的术语(也称为标识),以及文档中术语的位置。内置术语断开器还用于执行查询字符串的文档(文本组件)的术语断开。例如,查询字符串 "rain or shine" 包含由 OR 操作符连接的两个文档,"rain" 和 "shine"。在文本配置中指定的内置术语断开器算法还用于将非索引字表和 sa_char_terms 系统过程的输入断开成术语。

根据应用程序的需要,您可能会发现内置 GENERIC 术语断开器的一些行为不符合预期或存在限制,而 NGRAM 术语断开器不适合于应用程序的需要。例如,内置 GENERIC 术语断开器不提供语言特定的术语断开。下面是可能希望实施自定义术语断开器的一些其它原因:

  • 无语言特定的术语断开   不同语言组成术语的语言规则各不相同。因此,各种语言的术语断开规则也各不相同。内置术语断开器不提供语言特定的术语断开规则。

  • 处理带撇号的词   内置 GENERIC 术语断开器会将单词 "they'll" 视为 "they ll"。但您可以设计自定义 GENERIC 术语断开器,将撇号视为单词的一部分。

  • 不支持术语替换   不能指定术语替换。例如,当索引单词 "they'll" 时,您可能希望将其存储为两个术语:they 和 will。类似地,您可能希望使用术语替换对区分大小写的数据库执行区分大小写的搜索。

SQL Anywhere 还允许使用外部前置过滤器库在索引数据之前执行前置过滤。前置过滤允许只提取希望从文档中索引的文本内容。例如,假定您希望在包含 XML 值的列上创建文本索引。前置过滤器可以过滤掉 XML 标记,使 XML 标记不与内容一起被索引。

SQL Anywhere 提供了一个 API,可用于在创建和更新全文索引时访问自定义和第三方的前置过滤器和术语断开器库。这意味着可以使用外部库获取 XML、PDF 和 Word 等格式的文档,并在为其内容建立索引之前删除不需要的术语和内容。

您的 Samples 目录中所包含的示例前置过滤器和术语断开器库可帮助您设计自己的库,您也可以使用该 API 访问第三方库。如果在运行数据库服务器的系统上安装了 Microsoft Office,则可以使用针对 Word 和 Excel 等 Office 文档的 IFilter。如果服务器安装了 Acrobat Reader,则可能可以使用 PDF IFilter。

注释

不支持外部 NGRAM 术语断开器。