微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JSON全文搜索mysql

如何解决JSON全文搜索mysql

我有一个包含以下内容的测试表:

CREATE TABLE `test` (
    `id`                    BINARY(16)      NOT NULL    DEFAULT (UUID_TO_BIN(UUID())),`name`                  VARCHAR(64)     NOT NULL,`phone`                 JSON            NOT NULL,);

我想拥有的是在电话字段中搜索Json,

到目前为止,我到达的唯一方法生成一个如下所示的字段:

CREATE TABLE `test` (
    `id`                    BINARY(16)      NOT NULL    DEFAULT (UUID_TO_BIN(UUID())),`phone_list`            VARCHAR(30)     GENERATED   ALWAYS  AS (JSON_UNQUOTE(Phone -> '$[*].Number'))   STORED,FULLTEXT               `Index_FullText`            (name,PhoneList)
);

还有什么更好的方法来执行此查询并且没有重复的数据?

MysqL版本是8.0.21

解决方法

您能否像这样在您的电话号码上创建一个多值索引:

KEY `ix_phone` ((cast(json_extract(`Phone`,_utf8mb4'$[*].Number') as char(36)

然后在您的选择语句中使用:

WHERE 'some phone number' MEMBER OF(Phone->'$[*].number')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。