• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            興海北路

            ---男兒仗劍自橫行
            <2008年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            統計

            • 隨筆 - 85
            • 文章 - 0
            • 評論 - 17
            • 引用 - 0

            常用鏈接

            留言簿(6)

            隨筆分類

            隨筆檔案

            收藏夾

            全是知識啊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            在mysql中使用全文索引
            作者: falcon   發表日期: 2006-04-25 10:54   復制鏈接



            引言:

            在使用like進行模糊查詢,當數據量大到一定程序的時候,我們會發現查詢的效率是相當低下的。下面就此介紹一下mysql提供全文索引和搜索的功能。

            正文:

            下面是從參考資料里頭摘錄下來的內容,具體使用見參考資料,那里更詳細哦


            1) 很多互聯網應用程序都提供了全文搜索功能,用戶可以使用一個詞或者詞語片斷作為查詢項目來定位匹配的記錄。在后臺,這些程序使用在一個SELECT查詢中 的LIKE語句來執行這種查詢,盡管這種方法可行,但對于全文查找而言,這是一種效率極端低下的方法,尤其在處理大量數據的時候。
              MySQL 針對這一問題提供了一種基于內建的全文查找方式的解決方案。在此,開發者只需要簡單地標記出需要全文查找的字段,然后使用特殊的MySQL方法在那些字段 運行搜索,這不僅僅提高了性能和效率(因為MySQL對這些字段做了索引來優化搜索),而且實現了更高質量的搜索,因為MySQL使用自然語言來智能地對 結果評級,以去掉不相關的項目。

            2)到 3.23.23 時,MySQL 開始支持全文索引和搜索。全文索引在 MySQL 中是一個 FULLTEXT 類型索引。FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 時或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、VARCHAR 或 TEXT 列上創建。對于大的數據庫,將數據裝載到一個沒有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 創建索引,這將是非常快的。將數據裝載到一個已經有 FULLTEXT 索引的表中,將是非常慢的。

            全文搜索通過 MATCH() 函數完成。


            下面大概介紹一下創建全文索引的過程,主要有兩種辦法:
            第一種是創建表的時候就創建全文索引,第二種類是在創建表以后再增加全文索引,通過上面的引文我們知道后者比前者有些好處

            1、先創建表,然后通過"AlTER TABLE"增加全文索引

            mysql> create database ftt;   --創建數據庫
            Query OK, 1 row affected (0.03 sec)
            mysql> use ftt;           --使用數據庫
            Database changed
            mysql> create table reviews     --創建表
              -> (
              -> id int(5) primary key not null auto_increment,
              -> data text
              -> );
            Query OK, 0 rows affected (0.09 sec)

            mysql> INSERT ignore INTO `reviews` (`id`, `data`) VALUES(1, 'Gingerboy has a new singl
            e out called Throwing Rocks. It\'sgreat!'); --下面三句都是插入數據
            Query OK, 1 row affected (0.06 sec)

            mysql> INSERT ignore INTO `reviews` (`id`, `data`) VALUES (2, 'Hello all, I really like
            the new Madonna single. One of the hottest tracks currently playing...I\'ve bee
            n listening to it all day');
            Query OK, 1 row affected (0.00 sec)

            mysql> INSERT ignore INTO `reviews` (`id`, `data`)VALUES (3, 'Have you heard the new ba
            nd Hotter Than Hell?They have five members and they burn their instruments when
            they play in concerts. These guys totally rock! Like, awesome, dude!');
            Query OK, 1 row affected (0.00 sec)

            mysql> alter table reviews add fulltext index (data);   --通過alter增加全文索引
            Query OK, 3 rows affected (0.16 sec)
            Records: 3 Duplicates: 0 Warnings: 0

            mysql> select id from reviews where match (data) against ('Madonna'); --通過match和against實現全文檢索
            +----+
            | id |
            +----+
            | 2 |
            +----+
            1 row in set (0.00 sec)

            mysql> select id from reviews where match (data) against ('+Madonna+instruments'
            ); --搜索出包含Madonna或者instruments的所有記錄的id號
            +----+
            | id |
            +----+
            | 2 |
            | 3 |
            +----+
            2 rows in set (0.00 sec)

            mysql> select id from reviews where match (data) against ('Mado*' in boolean mod
            e); --檢索出包含Mado的所有記錄的id
            +----+
            | id |
            +----+
            | 2 |
            +----+
            1 row in set (0.00 sec)


            補充
              從上面的結果不難看出,mysql的全文索引和檢索支持多關鍵字,從下面的參考資料,你還可以發現更多實現,看看去哦

            2、在創建表的時候就創建全文索引

            由于其他的內容和上面差不多,下面只給出創建時的語法


            Code:

            [Ctrl+A Select All]



            參考資料:

            1)如何在MySQL中獲得更好的全文搜索結果 http://dev.21tx.com/2006/04/05/10735.html
            [主要介紹了全文檢索和搜索是怎么用的]

            2)mysql全文檢索http://www.jolr.com/forum/?display=topic&id=4856&s=371cda7ed1694f669f75610dde769c82
            [主要介紹了全文檢索的一些語法知識等]
            另外,如果想要看最原始的資料,請上mysql官方網站,http://www.mysql.com
            大家注意拉,mysql5以后才支持視圖和存儲過程
            要是想要使用這些東西,可以到www.mysql.cn或者www.phpchina.cn下載mysql5.0.18哦

            1)下面是mysql下存儲過程的使用
            http://www.mimi163.net/cs/wenzhang/2006/3/16/996.htm
            有時間寫篇關于mysql和其他數據庫存儲過程使用的比較,呵呵
            感覺這個東西還是很有用的拉
            2)另外,這里有一篇介紹php怎么調用mysql的存儲過程的
            也是相當的不錯,呵呵
            http://www.ithack.net/Articles/php/2005052595601.html

            不過上面的東西,我還沒有測試過,正在使用中...
            后面用了一下感覺不錯

            對拉,注意這個東西的意思哦
            delimiter // --- 這是定義結束符為“//”

            解決了mysql5中直接創建全文索引時的一個問題

            問題為:
            ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes

            解決:
            http://www.dmresearch.net/shijun/?p=108
            好東西,先放這里

            《PHP 字符串操作入門教程 》
            http://study.zhupao.com/infoview/Article_16867.html
            我自己試了后精簡說一下:

            問題:
            ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes
            解決辦法:
            如果你以前使用:
            create table test
            (
            id int not null primary key,
            name text,
            fulltext(name)
            );
            出錯
            那么現在使用
            create table test
            (
            id int not null primary key,
            name text,
            fulltext(name)
            )type=myisam;
            就可以解決
            或者把type用engine代替

            補充:
            在我使用的時候
            mysql4.0竟然沒有這個問題,但是使用mysql5.0的時候到出現,不過用上面辦法就解決拉

            posted on 2008-03-14 16:13 隨意門 閱讀(1284) 評論(0)  編輯 收藏 引用

            人人狠狠综合久久亚洲婷婷| 久久久久久狠狠丁香| 久久久久国产| 亚洲精品无码久久不卡| 99久久免费国产精品特黄| 偷窥少妇久久久久久久久| 亚洲色大成网站WWW久久九九| 狠狠综合久久AV一区二区三区| 粉嫩小泬无遮挡久久久久久| 国产精品99久久久久久董美香 | 久久婷婷久久一区二区三区| 国产精自产拍久久久久久蜜| 亚洲精品无码久久久影院相关影片 | 99久久国产综合精品麻豆| 99久久精品国产毛片| 狠狠综合久久综合88亚洲| 国内精品久久久久久不卡影院| 国产亚洲精品久久久久秋霞| 日韩精品久久久久久| 乱亲女H秽乱长久久久| 国产精品美女久久久| 久久天天躁狠狠躁夜夜2020老熟妇| 亚洲国产另类久久久精品黑人| 91性高湖久久久久| 亚洲午夜久久久影院伊人| 国产精品成人99久久久久91gav| 久久精品国产2020| 久久se精品一区二区影院| 91精品国产综合久久精品| 久久午夜夜伦鲁鲁片免费无码影视| 国产精品无码久久久久| 久久久久久国产精品免费无码| 国产精品久久久久免费a∨| 狠狠色综合网站久久久久久久| 国产亚洲欧美精品久久久 | AV无码久久久久不卡蜜桃| 久久精品国产WWW456C0M| 国产精品99久久精品| 成人综合伊人五月婷久久| 久久精品无码专区免费青青| 亚洲国产精品18久久久久久|