程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql全文搜刮match against的用法

Mysql全文搜刮match against的用法

編輯:MySQL綜合教程

Mysql全文搜刮match against的用法。本站提示廣大學習愛好者:(Mysql全文搜刮match against的用法)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql全文搜刮match against的用法正文


關於年夜的數據庫,將數據裝載到一個沒有 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.

MySQL支撐全文索引(Full-Text) 曾經良久了,今朝,fulltext是一種只實用於MyISAM表的一個索引類型,並且對界說索引列的數據類型也無限制,只能是以下三種的組合char、 varchar、text。fulltext可以在創立表的同時就一路界說好,或許在表創立完成以後,經由過程語句alter table或create index來追加索引,總之前後的後果是一樣的,然則二者的效力倒是存在很年夜差別的,年夜量的試驗證實,關於年夜數目的表來講,先加載數據再來界說全文索引的 速度要遠遠優於在一個曾經界說好全文索引的內外面拔出年夜量數據的速度。必定會問:這是問甚麼呢?其實,事理很簡略,前者只須要一次性對你的索引列表停止操 作,排序比擬都是在內存中完成,然後寫入硬盤;後者則要一條一條去硬盤中讀取索引表然後再停止比擬最初寫入,天然如許速度就會很慢。MySQL是 經由過程match()和against()這兩個函數來完成它的全文索引查詢的功效。match()中的字段稱號要和fulltext中界說的字段分歧,如 果采取boolean形式搜刮,也許可只包含fulltext中的某個字段,不須要全體列出。against()中界說的是所要搜刮的字符串和請求數據 庫經由過程哪一種形式去履行全文索引的搜刮查詢。上面經由過程一個例子分離引見一下fulltext所支撐的3中搜刮形式。

MySQL全文索引與中文分詞總結及普通的症結詞搜刮流程
http://www.tzlink.com/info/show.php?aid=4532

mysql 全文檢索 中文分詞
http://hi.百度.com/agg230/blog/item/33d3d50eada260e337d1225b.html

支撐中文的MySQL 5.1+ 全文檢索分詞插件
http://hi.百度.com/start_and_end/blog/item/6d6ab918b7d3800334fa412e.html

家用一下搜刮引擎就會發明,分詞的情形只是湧現在當整詞射中為0的情形下。
而詳細如何分詞,年夜家可以參考一下百度搜刮實驗成果:

·假如搜“徐祖寧寧”,成果為“徐祖”+“寧寧”。(搜人名的情形下,它能夠有一個百家姓辭書,主動將姓後第一個字歸前)
·搜“徐情願”,成果為“徐情願”。(解釋“情願”歸“徐”一切。同上。由於徐是姓。)
·搜“徐祖情願”,成果為“徐祖”+“情願”。(由於“情願”是詞,故“徐”只帶“祖”。)
·搜“徐祖寧高”,成果為“徐祖寧”。(由於“寧高”不是症結字,所以“寧”歸前詞一切。而“高”能夠由於是單字,為進步前詞搜刮效力故被省略。)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved