美文网首页
mysql 全文索引

mysql 全文索引

作者: AGEGG | 来源:发表于2023-07-25 09:03 被阅读0次

查看分词大小

SHOW VARIABLES LIKE 'ngram_token_size';

my.ini 中修改分词大小

ngram_token_size=1

创建表字段的全文索引

ALTER TABLE dun_stop_word ADD FULLTEXT INDEX ft_index_title (`title`) WITH PARSER ngram;

ALTER TABLE dun_missens_expression ADD FULLTEXT INDEX ft_index_misstatement (`misstatement`) WITH PARSER ngram;  

使用全文索引查询

SELECT 
    c1.cname AS c1Name,
    c2.cname AS c2Name,
    c3.cname AS c3Name,
    t1.`title`,
    MATCH( t1.`title` ) AGAINST ( '哈哈哈哈123' ) AS score
FROM
    `dun_stop_word` t1 
    left join dun_classify c1 on c1.id = t1.classisfy_first_id
    left join dun_classify c2 on c2.id = t1.classisfy_senc_id
    left join dun_classify c3 on c3.id = t1.classisfy_third_id
WHERE
    t1.`status` = 0 
    AND t1.`classisfy_first_id` = 3 
    AND MATCH ( t1.`title` ) AGAINST ( '哈哈哈哈123' IN NATURAL LANGUAGE MODE );

全文索引 MODE

Boolean MODE (布尔模式)
NATURAL LANGUAGE MODE (自然语言模式)

MySQL函数Locate的使用

Locate(str,sub) > 0,表示sub字符串包含str字符串;
Locate(str,sub) = 0,表示sub字符串不包含str字符串。

SELECT
            c1.cname AS c1Name,
            c2.cname AS c2Name,
            c3.cname AS c3Name,
            t1.`title`,
            MATCH( t1.`title` ) AGAINST ( #{content} ) AS score
        FROM
            `dun_stop_word` t1
            left join dun_classify c1 on c1.id = t1.classisfy_first_id
            left join dun_classify c2 on c2.id = t1.classisfy_senc_id
            left join dun_classify c3 on c3.id = t1.classisfy_third_id
        WHERE
            t1.`status` = 0
          AND t1.`classisfy_first_id` in
            <foreach collection="classifyList" item="id" open="(" close=")" separator=",">
               #{id}
            </foreach>
        AND locate( t1.`title`, #{content} ) > 0

相关文章

网友评论

      本文标题:mysql 全文索引

      本文链接:https://www.haomeiwen.com/subject/kbacpdtx.html