MATCH
MATCH 用于在列出的列中搜索包含给定关键字的行。该函数只能出现在 WHERE 子句中。
语法
MATCH('<columns>', '<keywords>'[, '<options>'])
<columns>:要搜索的列列表,以逗号分隔。可追加^<boost>以提高某一列相对于其他列的权重。<keywords>:要搜索的词项。可追加*进行后缀匹配,例如rust*。<options>:可选参数,以分号分隔的key=value列表,用于微调搜索行为。
选项
示例
在许多 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