zoukankan      html  css  js  c++  java
  • 全文检索在 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);

    5.详细的说明请参数Mysql官方网站
        http://dev.mysql.com/doc/refman/5.1/zh/functions.html#fulltext-search
        这是Mysql 5.1的,不过4.X也可以做为参考,基本一置.我用的就是Mysql 4.1.  
  • 相关阅读:
    php1
    element ui
    webpack
    vue-router
    vue实例相关2
    vue实例相关
    js笔记2
    js笔记
    不找工作,你的简历也要更新!
    除了做测试,我们还能做些什么呢?
  • 原文地址:https://www.cnblogs.com/ldms/p/3525374.html
Copyright © 2011-2022 走看看