第三章 使用 SQL Search - 填充表

文章目录

  • 第三章 使用 SQL Search - 填充表
  • 填充表
  • 执行 `SQL` 搜索

第三章 使用 SQL Search - 填充表

填充表

与任何 SQL 索引一样,定义的 SQL 搜索索引(默认情况下)是在填充新表时构建的,并在随后插入、更新或删除数据时维护的。使用 %NOINDEX 填充表时,可以推迟索引的构建,然后使用 %Build() 方法构建索引。可以向已填充数据的表添加索引,然后构建该索引。

以下示例从 Aviation.Events 表填充 Aviation.TestSQLSrch 表。任何定义的 SQL 搜索索引都会自动构建。此示例插入了大量文本,因此运行可能需要一分钟左右的时间:

INSERT OR UPDATE INTO Aviation.TestSQLSrch (UniqueNum,CrashDate,Narrative) 
    SELECT %ID,EventDate,NarrativeFull FROM Aviation.Event

此示例将 INSERT OR UPDATE 与使用唯一键定义的字段一起使用,以防止重复执行创建重复记录。

执行 SQL 搜索

可以在 SQL 查询 WHERE 子句中使用 SQL 搜索语法来对一个或多个文本项执行文本搜索。这些文本项可以是单词或单词序列(基本索引)或 NLP 语义实体(语义索引)。多个文本项是隐式 AND 搜索;所有指定的项目必须以任何顺序出现在文本中。 SQL 搜索的语法如下:

WHERE %ID %FIND search_index(indexname,'search_items',search_option,'language','synonym_tables')
  • indexname 是为特定列定义的 SQL 搜索索引的名称。
  • search_items 是要搜索的文本项(单词或 NLP 实体)列表,用引号引起来。文本项由空格分隔。项目由字母数字字符串和可选的通配符语法字符组成。默认情况下,文本项不区分大小写(请参阅 LOWER 参数)。可用的 search_items 语法如下所述。
  • search_option 是指定要执行的搜索类型的索引选项整数。可用值包括 0(语法搜索)、1(带词干的语法搜索)、2(带分解和词干的语法搜索)、3(带模糊搜索的语法搜索)和 4(带正则表达式的语法搜索)。如果 search_option=4,则假定 search_items 包含单个正则表达式字符串。有关更多详细信息,请参阅正则表达式。请注意,出于性能原因,SQL 搜索不支持一些更深奥的正则表达式语法形式; $LOCATE ObjectScript 函数支持这些语法形式。
  • language 是要应用的 NLP 支持的语言模型,指定为两个字符的字符串。例如,“en”指定英语。如果指定“*”,查询将执行自动语言识别。
  • synonym_tables 是一个包含同义词表名称的字符串,或者是逗号分隔的同义词表列表。

执行基本索引搜索时,SQL 搜索通过是否存在一个或多个空格字符来识别单词。句子标点符号(句号、逗号、分号或冒号后跟空格)将被忽略。 SQL 搜索将所有其他标点符号视为文字。例如,SQL 搜索将“touch-and-go”视为单个单词。数字中的连字符或小数点等标点符号被视为文字。必须指定引号字符和撇号。可以通过将其加倍来指定单引号字符。

默认情况下,文本被标准化为小写字母(不区分大小写)。还执行其他特定于语言的规范化,例如规范化仅字符宽度不同的日语字符。

可以使用语义索引执行任何基本索引搜索(单词、共现或位置短语)。尝试使用基本索引执行语义索引搜索会导致 SQLCODE -149 错误。

你可能感兴趣的:(SQL,文本搜索,sql,mysql,数据库)