zoukankan      html  css  js  c++  java
  • MySQL全文检索

    https://help.aliyun.com/document_detail/107083.html

    #添加全文索引

    ALTER TABLE `biz_document` ADD FULLTEXT f_content (`content`) with parser ngram;

    ALTER TABLE `biz_document` ADD FULLTEXT f_title (`title`) with parser ngram;

    #搜索

    SELECT * FROM biz_document WHERE MATCH (title) AGAINST ('最多跑一次' IN NATURAL LANGUAGE MODE); #自然语言模式

    SELECT * FROM biz_document WHERE MATCH (title) AGAINST ('+最多跑一次 +管理' IN BOOLEAN MODE); #布尔模式

    SELECT * FROM biz_document WHERE MATCH (title) AGAINST ('+最多跑一次 -管理' IN BOOLEAN MODE); #布尔模式

    SELECT * FROM biz_document WHERE MATCH (title) AGAINST ('>最多跑一次 +MySQL' IN BOOLEAN MODE); #布尔模式


    #自然语言模式: 文本的查询被转换为n-gram分词查询的并集。例如,where条件('信息系统')转换为('信息 息系 系统')
    #布尔模式:文本查询被转化为n-gram分词的短语查询。 例如,where条件('信息系统')转换为("'信息 息系 系统'")。

    #通配符查询: 如果前缀的长度比ngram_token_size小,那么查询结果将返回在全文索引中所有以这个词作为前缀的n-gram的词。
    -- 如果前缀的长度大于等于ngam_token_size,那么这个查询则转换为一个短语(phrase search),通配符则被忽略, 改用短语查询。

    #INSERT INTO biz_acticles (title) VALUES ('信息系统'), ('信息 系统'), ('信息的系统'), ('信息'), ('系统'), ('息系');

    SELECT * FROM biz_acticles WHERE MATCH (title) AGAINST ('信息系统' IN NATURAL LANGUAGE MODE); #自然语言模式

    SELECT * FROM biz_acticles WHERE MATCH (title) AGAINST ('信息系统' IN BOOLEAN MODE); #布尔模式

    SELECT * FROM biz_acticles WHERE MATCH (title) AGAINST ('信息*' IN BOOLEAN MODE); #通配符查询

    SELECT * FROM biz_acticles WHERE MATCH (title) AGAINST ('"信息 系统"' IN BOOLEAN MODE); #短语查询

    show VARIABLES LIKE '%token%'; #ngram_token_size

  • 相关阅读:
    Spring中的@Transactional(rollbackFor = Exception.class)属性详解
    查询数据库中表数量和各表中数据量
    69道Spring面试题和答案
    Spring常见面试题总结(超详细回答)
    nginx 解决session一致性
    redis 主从同步
    如何实现一个线程安全的单例,前提是不能加锁
    InnoDB中一棵B+树能存多少行数据
    ConcurrentHashMap 源码分析
    java HashMap 源码解析
  • 原文地址:https://www.cnblogs.com/smileblogs/p/14781835.html
Copyright © 2011-2022 走看看