📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

MATCH



MATCH 用于在列出的列中搜索包含给定关键字的行。该函数只能出现在 WHERE 子句中。

语法

MATCH('<columns>', '<keywords>'[, '<options>'])
  • <columns>:要搜索的列列表,以逗号分隔。可追加 ^<boost> 以提高某一列相对于其他列的权重。
  • <keywords>:要搜索的词项。可追加 * 进行后缀匹配,例如 rust*。
  • <options>:可选参数,以分号分隔的 key=value 列表,用于微调搜索行为。

选项

选项取值描述示例
fuzziness1 或 2在指定的 Levenshtein 距离内匹配关键字。MATCH('summary, tags', 'pedestrain', 'fuzziness=1') 可匹配包含正确拼写 pedestrian 的行。
operatorOR(默认)或 AND当未指定布尔运算符时,控制如何组合多个关键字。MATCH('summary, tags', 'traffic light red', 'operator=AND') 要求同时包含这些词。
lenienttrue 或 false当为 true 时,抑制解析错误并返回空结果集。MATCH('summary, tags', '()', 'lenient=true') 会返回空结果,而不是报错。

示例

在许多 AI 流水线中,你可能会在 VARIANT 列中保存结构化元信息,同时将便于人类阅读的摘要物化出来以供搜索。以下示例存储了从 JSON 负载中提取的行车记录仪帧摘要和标签。

示例:构建可搜索的摘要

CREATE OR REPLACE TABLE frame_notes ( id INT, camera STRING, summary STRING, tags STRING, INVERTED INDEX idx_notes (summary, tags) ); INSERT INTO frame_notes VALUES (1, 'dashcam_front', 'Green light at Market & 5th with pedestrian entering the crosswalk', 'downtown commute green-light pedestrian'), (2, 'dashcam_front', 'Vehicle stopped at Mission & 6th red traffic light with cyclist ahead', 'stop urban red-light cyclist'), (3, 'dashcam_front', 'School zone caution sign in SOMA with pedestrian waiting near crosswalk', 'school-zone caution pedestrian');

示例:布尔 AND

SELECT id, summary FROM frame_notes WHERE MATCH('summary, tags', 'traffic light red', 'operator=AND'); -- Returns id 2

示例:模糊匹配

SELECT id, summary FROM frame_notes WHERE MATCH('summary^2, tags', 'pedestrain', 'fuzziness=1'); -- Returns ids 1 and 3

文档内容是否有帮助?