zoukankan      html  css  js  c++  java
  • Mysql 全文搜索 Match Against用法

    全文检索在 MySQL 中就是一个 FULLTEXT 类型索引。FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、 VARCHAR 或 TEXT 列上创建
     
    对于大的数据库,将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE   (或 CREATE INDEX) 创建索引,这将是非常快的。将数据装载到一个已经有 FULLTEXT 索引的表中,将是非常慢的。
    1.使用Mysql全文检索fulltext的先决条件
        表的类型必须是MyISAM
    建立全文检索的字段类型必须是char,varchar,text

    2.建立全文检索先期配置
    由于Mysql的默认配置是索引的词的长度是4,所以要支持中文单字的话,首先更改这个.
    *Unix用户要修改my.cnf,一般此文件在/etc/my.cnf,如果没有找到,先查找一下find / -name 'my.cnf'
    在 [mysqld] 位置内加入:  
           ft_min_word_len     = 2 
    其它属性还有
           ft_wordlist_charset = gbk 
           ft_wordlist_file = /home/soft/mysql/share/mysql/wordlist-gbk.txt 
           ft_stopword_file = /home/soft/mysql/share/mysql/stopwords-gbk.txt 
    稍微解释一下: 
           ft_wordlist_charset 表示词典的字符集, 目前支持良好的有(UTF-8, gbk, gb2312, big5) 
           ft_wordlist_file 是词表文件, 每行包括一个词及其词频(用若干制表符或空格分开,消岐专用) 
           ft_stopword_file 表示过滤掉不索引的词表, 一行一个. 
           ft_min_word_len     加入索引的词的最小长度, 缺省是 4, 为了支持中文单字故改为 2 

    3.建立全文检索
    在建表中用FullText关键字标识字段,已存在的表用 ALTER TABLE (或 CREATE INDEX) 创建索引
    CREATE fulltext INDEX index_name ON table_name(colum_name);

    4.使用全文检索
        在SELECT的WHERE字句中用MATCH函数,索引的关键词用AGAINST标识,IN BOOLEAN MODE是只有含有关键字就行,不用在乎位置,是不是起启位置.
    SELECT * FROM articles WHERE MATCH (tags) AGAINST ('哈哈' IN BOOLEAN MODE);
  • 相关阅读:
    从0开始学习自动化框架Airtest
    测试经理必知必会-Kanban和Scrum区别
    测试工程师的福音-如何使用Sonar完成代码质量检测
    看了很多文章,就这篇说明白了什么是接口测试
    测试经理必知必会:敏捷模型之Kanban
    Selenium元素定位不到?JS注入轻松搞定!
    测试经理必知必会:敏捷开发3355原则
    我知道你会冒泡排序,但是你会优化冒泡排序吗?
    快来使用Portainer让测试环境搭建飞起来吧
    给个MySQL,打算怎么测试?
  • 原文地址:https://www.cnblogs.com/guaiyouyisi/p/10687686.html
Copyright © 2011-2022 走看看