执行布尔搜索

如果在文本搜索中使用了任何布尔表达式,那么将执行布尔搜索。

例如,要搜索 description 列中包含词 multimediaeditor,而不包含词 video 的文本,请执行以下 SQL 语句:
SELECT id, description FROM videos
    WHERE etx_contains (description, 
    Row('multimedia & editor & !video', 
    'SEARCH_TYPE = BOOLEAN_SEARCH'));
在该示例中,& 符号表示逻辑 AND 运算符。也可以使用 | 符号表示逻辑 OR,并使用 ! 或 ^ 符号表示逻辑 NOT。下图显示在 videos 表上运行示例中的查询时符合条件的行,也称为命中列表

图: 使用布尔表达式的样本文本搜索查询


显示一个布尔搜索,以从其列包含“multimedia”的各种拼写形式的表中获取包含关键字“multimedia”和“editor”但不包含关键字“video”的行,以及同时包含“multimedia”和“video”的一行。命中列表是返回的包含“multimedia”的两行。

可以使用 etx_contains() 运算符的第三个可选参数将 SLV 传递给搜索引擎。搜索引擎使用该变量来记录它分配给命中列表中每一行的文档分数并记录突出显示信息。SLV 的数据类型是 etx_ReturnType,这是一种从 GBase 8s 派生的行类型,由一起包含分数信息和突出显示信息的两个字段组成。

有关使用 SLV 分数信息的更多信息,请参阅模糊搜索的文档分数。有关 SLV 的更常规信息,请参阅《GBase 8s SQL 指南:语法》。

有关 etx_ReturnType 数据类型及其两个字段,以及如何使用这些字段中包含的信息的更多信息,请参阅 etx_ReturnType 数据类型

有关可以使用 GBase 8s Excalibur Text Search DataBlade 模块 执行的搜索类型的概述,请参阅概念

下图提供目前仍在使用的 etx_contains() 语法的摘要。

图: etx_contains() 语法摘要


显示 CREATE INDEX 语句的示例,用于创建 etx 索引以及在索引列中搜索文本的 SELECT 语句。