第一章 SQL 文本搜索
本主题向介绍IRIS
对 SQL
文本搜索的支持,它提供各种语言的非结构化文本数据的语义上下文搜索。它涵盖以下主题:
用于处理非结构化文本的相关但独立的工具是自然语言处理(NLP
)。 SQL
搜索的前提是知道自己要查找什么。 NLP
文本分析允您在不了解文本内容的情况下分析文本内容。
为什么 SQL Search
很重要
快速搜索非结构化文本数据的能力对于访问许多公司和机构通常存储的大量文本内容至关重要。任何此类数据的搜索工具都必须具有以下功能:
- 快速搜索:
IRIS SQL
搜索可以快速搜索大量数据,因为它搜索的是数据生成的优化索引,而不是顺序搜索数据本身。 - 单词感知搜索:
SQL
搜索不是字符串搜索,而是基于文本中的语义结构的搜索。SQL
搜索最基本的语义结构是单词。这减少了当字符串搜索发现嵌入在另一个单词中的字符串或字符串桥接两个单词时产生的误报数量。 - 实体感知搜索:
SQL
搜索考虑按语义关系分组以形成实体的多个单词。因此,它可以按指定的顺序搜索多个单词(位置短语)、出现在彼此特定距离内的单词(无论顺序如何)以及在实体的开头或结尾找到的单词。这使您能够将搜索范围缩小到在其他单词的指定上下文中找到的单词(或短语)。 - 语言感知搜索:识别单词之间的语义关系是特定于语言的。
SQL
搜索包含十种自然语言的语义规则(语言模型)。它还提供对其他语言的支持。它不需要创建或关联字典或本体。 - 模式匹配:
SQL
搜索提供通配符匹配和正则表达式 (RegEx
) 匹配来匹配字符模式。 - 模糊匹配:
SQL
搜索为近似匹配提供模糊搜索,该搜索考虑了搜索字符串的计算变异程度。除其他外,这可以匹配拼写错误。 - 派生匹配:
SQL Search
可以使用分解来匹配根词和组成词。SQL
搜索可以使用同义词表来匹配同义词单词和短语。
如何实施 SQL
搜索
SQL
搜索可以搜索在 SQL
表的列中找到的文本数据。为此,必须为包含文本数据的列创建 SQL
搜索索引。 将表列实现为持久类中的属性。
索引分为三个级别,每个级别都支持附加功能以及较低级别的所有功能:基本、语义和分析:
Basic
支持单词搜索和位置短语搜索,包括使用通配符、短语中单词之间的范围、正则表达式 (RegEx
) 匹配和共现搜索。Semantic
支持所有基本功能,还支持IRIS
自然语言处理 (NLP
) 实体。它可以搜索实体以及开始实体或结束实体的单词或短语。它识别NLP
属性,例如否定。Analytic
支持所有语义功能,还支持NLP
路径。它还可以基于NLP
优势和邻近分数进行搜索。
填充索引。与所有 SQL
索引一样您可以在表填充数据后直接构建索引,也可以在将记录插入空表时让 SQL
自动构建索引条目。无论哪种情况,SQL
都会在后续插入、更新或删除操作中自动更新此索引。
执行 SQL
搜索时编写了一个 SELECT
查询,其中的 WITH
子句包含 %ID %FIND search_index()
语法。 search_index()
函数参数包括 SQL
搜索索引的名称和搜索字符串。该搜索字符串可以包括通配符、位置短语和实体语法字符。搜索字符串还可以包含 AND
、OR
和 NOT
逻辑运算符。