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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM