SQL Search
本主题介绍 SQL Search
工具,这是一种用于执行上下文感知文本搜索操作的工具。要使用SQL Search
,必须为包含要搜索的文本的每个列定义 SQL
搜索索引。然后,可以使用标准 SQL
查询以及包含 InterSystems SQL
搜索语法的 WHERE
子句来搜索文本记录。查询将返回包含指定搜索项的所有记录。还可以突出显示返回记录中的匹配文本。
需要有一个已启动并正在运行的 IRIS
实例,并且具有有效的许可证密钥,可以提供对 IRIS
自然语言处理器 (NLP
) 的访问。 (可以从管理门户查看许可证密钥:选择“系统管理”,然后选择“许可”。)
本文档中的示例使用 Aviation.Event SQL
表中的数据。如果希望使用此示例数据,可以 https://github.com/intersystems/Samples-Aviation
中获取。 (不需要了解有关 GitHub
的任何信息或拥有 GitHub
帐户。)找到 README.md
文件的内容,该文件显示在 GitHub
存储库中包含的文件名和目录下方。滚动到 README.md
文件底部的“安装说明”部分并完成这些步骤。
可以使用 SQL Search
来搜索 %String
数据类型或 %Stream.GlobalCharacter
(字符流)数据类型中的文本。
要执行 SQL Search
,要搜索的列必须具有已定义的 SQL
搜索位图索引。 SQL 搜索索引有四个级别。这些级别在嵌套子类中定义。每个索引级别都提供前一级别的所有功能,以及特定于该级别的其他 SQL
搜索功能。可以创建以下任何 SQL 搜索索引类型:
%iFind.Index.Minimal
):支持使用通配符、模糊搜索和正则表达式进行 SQL
单词和短语搜索。它不支持共现或位置短语搜索或搜索结果的突出显示。%iFind.Index.Basic
):支持使用通配符的 SQL
单词和词组搜索。它支持共现和位置短语搜索以及搜索结果的突出显示。%iFind.Index.Semantic
):支持 NLP
实体的 SQL
搜索,并可选择支持否定属性。%iFind.Index.Analytic
):支持语义索引的所有 NLP
功能,以及路径、邻近度和优势信息。每个索引级别都支持前一级别的所有参数,并添加一个或多个附加参数。未指定的参数采用默认值。
以下类定义示例创建一个表,该表在 Narrative
属性(列)上具有语义索引。索引属性可以是数据类型 %String
或 %Stream.GlobalCharacter
:
Class Aviation.TestSQLSrch Extends %Persistent [
DdlAllowed,Owner={UnknownUser},SqlRowIdPrivate,
SqlTableName=TestSQLSrch ]
{
Property UniqueNum As %Integer;
Property CrashDate As %TimeStamp [ SqlColumnNumber=2 ];
Property Narrative As %String(MAXLEN=100000) [ SqlColumnNumber=3 ];
Index NarrSemanticIdx On (Narrative) As %iFind.Index.Semantic(INDEXOPTION=0,
LANGUAGE="en",LOWER=1);
Index UniqueNumIdx On UniqueNum [ Type=index,Unique ];
}
任何类型的 SQL
搜索索引都支持以下参数:
IGNOREPUNCTUATION
指定是否忽略标点符号。对于 %iFind.Index.Minimal
,默认值为 1
:忽略标点符号。对于所有其他 SQL
搜索索引类型,默认值为 0
:标点符号影响搜索结果;文本中的前导标点符号和尾随标点符号必须与搜索字符串中的相同标点符号匹配。INDEXOPTION
指定是否建立索引以允许词干或分解。由于支持这些操作的索引会显着增加索引的大小,因此建议指定 INDEXOPTION=0
,除非很可能会使用词干提取或分解。默认值为 0
。LANGUAGE
指定索引记录时使用的语言。例如,“en”
指定英语。使用“*”
启用自动语言识别。默认为“en”
。LOWER
指定查询搜索是否区分大小写。默认情况下, SQL
搜索索引不区分大小写; SQL
搜索在对其建立索引之前将文本标准化为小写。 LOWER
参数确定是否执行小写标准化(LOWER=1
,默认值,标准化为小写)。由于语言约定通常在句子开头或在标题中使用单词时将其大写,因此在大多数应用中优选标准化为小写。如果指定 LOWER=0
,则查询 search_items
字符串区分大小写。例如,如果指定 LOWER=0
,则查询 search_items
字符串“turkey”
将仅匹配 turkey
,而不匹配 Turkey
。如果指定 LOWER=1
,则查询 search_items
字符串“turkey”
将匹配 turkey
和 Turkey。USERDICTIONARY
允许指定在索引之前应用于文本的用户定义的 UserDictionary
的名称。此参数是可选的,仅供高级使用。语义索引(%iFind.Index.Semantic
)还支持以下可选参数:
IFINDATTRIBUTES
允许指定是否识别文本中的否定并存储否定属性。 IFINDATTRIBUTES=1
标识并索引否定。默认值为 IFINDATTRIBUTES=0
。