MULTI_MATCH

MULTI_MATCH(inverted_column, keyword1, keyword2, ...)

功能说明

MULTI_MATCH
MULTI_MATCH
MATCH_ANY
MATCH_ANY
的别名,两者语义相同。只有构建了倒排索引的列才能使用该函数。在目标列上进行多关键词全文检索,任意一个关键词匹配即返回
true
true

MATCH_ANY
MATCH_ANY
的区别:
MATCH_ANY
MATCH_ANY
将多个关键词合并为一个
query
query
字符串传入,由分析器分词后匹配;
MULTI_MATCH
MULTI_MATCH
直接接受多个独立关键词参数,每个参数视为一个独立词项,不经过分析器分词,适合精确词项匹配。

在没有倒排索引的列上调用

MULTI_MATCH
MULTI_MATCH
,返回
null
null

参数说明

  • inverted_column:已建有倒排索引(
    USING INVERTED
    USING INVERTED
    )的列。对普通列调用将返回
    null
    null
  • keyword1, keyword2, ...:一个或多个关键词,类型为字符串字面量。任意一个关键词与列值匹配即返回
    true
    true

返回结果

  • 列有倒排索引时:
    boolean
    boolean
    类型,匹配返回
    true
    true
    ,不匹配返回
    false
    false
  • 列无倒排索引时:
    null
    null

使用示例

前置准备:创建带倒排索引的表

CREATE TABLE doc_articles ( id INT, title STRING, body STRING, INDEX idx_body (body) USING INVERTED PROPERTIES("parser" = "unicode") ); INSERT INTO doc_articles VALUES (1, 'Intro to SQL', 'SQL is a language for relational databases'), (2, 'Python Basics', 'Python is easy to learn and widely used'), (3, 'Cloud Storage', 'Object storage scales automatically in the cloud'), (4, 'SQL and Python', 'Combine SQL queries with Python for data analysis'); BUILD INDEX idx_body ON doc_articles;

场景一:单关键词匹配

SELECT id, title FROM doc_articles WHERE MULTI_MATCH(body, 'SQL');

+----+----------------+ | id | title | +----+----------------+ | 1 | Intro to SQL | | 4 | SQL and Python | +----+----------------+

场景二:多关键词匹配(任意一个命中即返回)

SELECT id, title FROM doc_articles WHERE MULTI_MATCH(body, 'Python', 'cloud');

+----+----------------+ | id | title | +----+----------------+ | 2 | Python Basics | | 3 | Cloud Storage | | 4 | SQL and Python | +----+----------------+

body
body
含 "Python" 或 "cloud"(忽略大小写)的行均被返回。

场景三:在无倒排索引的列上调用(返回 null)

SELECT MULTI_MATCH('hello world', 'hello', 'world');

+------+ | res | +------+ | null | +------+

直接在字符串字面量(无倒排索引)上调用,返回

null
null
,不报错。

注意事项

  • 目标列必须预先执行
    CREATE INDEX ... USING INVERTED
    CREATE INDEX ... USING INVERTED
    并完成
    BUILD INDEX
    BUILD INDEX
    ,否则返回
    null
    null
  • 关键词匹配忽略大小写
  • MULTI_MATCH
    MULTI_MATCH
    MATCH_ANY
    MATCH_ANY
    语义相同,可互换使用;
    MATCH_ANY
    MATCH_ANY
    额外支持
    option
    option
    (分词器)参数,
    MULTI_MATCH
    MULTI_MATCH
    不接受该参数
  • 不支持正则或模糊匹配,精确全文检索请使用
    MATCH_REGEXP
    MATCH_REGEXP

相关文档

联系我们
预约咨询
微信咨询
电话咨询
邮件咨询