时间:2022-11-07 12:30:01 | 来源:信息时代
时间:2022-11-07 12:30:01 来源:信息时代
全文本类型 : SQL/MM全文标准中针对全文检索应用制定的一个结构化用户定义类型。该类型支持全文数据值的构造,用于测试一个全文数据是否和一个指定的查询模式相匹配,及实现全文数据到普通SQL字符串的转换。Full Text类型的规范包含一组方法,用于与全文检索相适应的操作。如,构造一个SQL表:
CREATE TABLE information(
docno INTEGER,
document FULLTEXT)
其中,docno列包含了获取某个文档标识符的值,而document列包含了全文文档,它是全文本类型。以下是一个检索文档的查询语句的示例:
SELECT docno
FROM information
WHERE document.CONTAINS
(“International”)=1
该查询语句从information表中对每个文档进行检索操作,由document列中应用的CONTAINS方法返回一个值,“1”代表真,即包含了指定的模式,在这个示例中是一个单词“International”。上述操作的结果将是包含“International”的所有全文文档的标识符值的集合。
全文本类型与一般的计算机语言中的字符串类型在操作是不同的。首先,字符串类型可以是定长或变长而全文类型的长度总是变长。其次,在数据库的查找操作上,字符串类型总是通过整个值来查找,全文本类型有其特殊的查找方式。全文查找会建立词或词组之间的位置相邻关系,以及是否出现在同一个文档内。
全文本类型的查找运算不同于简单字符串类型。全文检索(full-text search)与基于模式匹配(SQL中的 ‘%’ 串模糊匹配)的搜索有很大的不同:
(1)短语(一个单词的序列)全文检索不是子串检索。使用子串检索(Substring search)包含字符串“lease” 的新闻条目,会返回一个包含“Foobar Corporation releases the 20.9 version…”的新闻条目,而对短语“lease”的全文检索不会出现这样的结果。
(2)全文检索支持基于语义和基于位置的检索,而子串检索不能。例如,使用全文检索能实现“查找所有包含与 ‘mouse’ 有相同词义的词(查找‘mouse’ 和 ‘mice’ )的新闻条目”和“查找在同一个自然段内包含词 ‘XML’和‘Full-text’ 的新闻条目”。
(3)全文检索有计算相关度或者相关性功能。在检索的时候,希望把与检索词最相关的结果排列在结果列表前面。在SQL/MM全文标准中,把相关性概念应用到结构化检索中,利用计算相关度功能,给出每篇检索命中文档的相关度。
(4)在SQL/MM全文标准中,有一个标记化的概念。由标记器返回的字符、元语法、字符序列,它是作为被查询的基本单元。一个单词由一到多个连续的字符组成。字不能由标点或者空格分开,单词可能交叠。短语是有序词的一个序列,可以包含任意数量的单词。
(5)文本执行标记化,也就是分成单词序列、自然段序列、标点符号单元和空格。
(6)文本标记化时,可以用函数和操作符表示出单词的相对位置,也识别了包含单词的句子和段落。标记化函数和操作符可以表示出单词的一部分(通配符、词干)或者词根。
SQL/MM全文标准中Full-Text类型和语种相关,实现时需指定以下与语言相关的内容: 词边界、句子边界、段落边界的识别方法; 同音词; 拼写近似词;停用词; 词的规范化。
Full-Text类型定义的属性和方法如下:
Contents: 私有属性,存放全文内容的字符串。
FT Language: 公有属性,语种。
Contains(): 在文档中搜索包含匹配模式或字符串的值。
Score(): 在文档中搜索包含匹配模式或字符串的值,并返回相关度。
NumberOfMatches():返回文档中与给定模式或字符串相匹配的次数。
Tokenize(): 将文档转换为规范化的FullText Token序列。
TokenizePosition() : 将文档转换为FT_TokenPosition序列。
Segmentize(): 将文档转换为FullText序列(分段)。
TokenizeAndStem(): 将文档转换为规范化和语干精简过的FullText Token序列。在中文语言环境下,等价于Tokenize方法。
TokenizePositionAndStem():将文档转换为规范化和语干精简过的FT TokenPosition序列。在中文语言环境中,等价于TokenizePosition方法。
FullText_to_Character():将FullText类型的文档转换为Character类型的字符串。
FT_Pattern: 符合匹配模式表达式规范的字符串。
FT_Token: 用以定义合法的文本串。
FT_TokenPosition: 包含了FT Token和位置数据。