• <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>

            興海北路

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

            統(tǒng)計

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

            常用鏈接

            留言簿(6)

            隨筆分類

            隨筆檔案

            收藏夾

            全是知識啊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

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



            引言:

            在使用like進(jìn)行模糊查詢,當(dāng)數(shù)據(jù)量大到一定程序的時候,我們會發(fā)現(xiàn)查詢的效率是相當(dāng)?shù)拖碌摹O旅婢痛私榻B一下mysql提供全文索引和搜索的功能。

            正文:

            下面是從參考資料里頭摘錄下來的內(nèi)容,具體使用見參考資料,那里更詳細(xì)哦


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

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

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


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

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

            mysql> create database ftt;   --創(chuàng)建數(shù)據(jù)庫
            Query OK, 1 row affected (0.03 sec)
            mysql> use ftt;           --使用數(shù)據(jù)庫
            Database changed
            mysql> create table reviews     --創(chuàng)建表
              -> (
              -> 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!'); --下面三句都是插入數(shù)據(jù)
            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實(shí)現(xiàn)全文檢索
            +----+
            | 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)


            補(bǔ)充
              從上面的結(jié)果不難看出,mysql的全文索引和檢索支持多關(guān)鍵字,從下面的參考資料,你還可以發(fā)現(xiàn)更多實(shí)現(xiàn),看看去哦

            2、在創(chuàng)建表的時候就創(chuàng)建全文索引

            由于其他的內(nèi)容和上面差不多,下面只給出創(chuàng)建時的語法


            Code:

            [Ctrl+A Select All]



            參考資料:

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

            2)mysql全文檢索http://www.jolr.com/forum/?display=topic&id=4856&s=371cda7ed1694f669f75610dde769c82
            [主要介紹了全文檢索的一些語法知識等]
            另外,如果想要看最原始的資料,請上mysql官方網(wǎng)站,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
            有時間寫篇關(guān)于mysql和其他數(shù)據(jù)庫存儲過程使用的比較,呵呵
            感覺這個東西還是很有用的拉
            2)另外,這里有一篇介紹php怎么調(diào)用mysql的存儲過程的
            也是相當(dāng)?shù)牟诲e,呵呵
            http://www.ithack.net/Articles/php/2005052595601.html

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

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

            解決了mysql5中直接創(chuàng)建全文索引時的一個問題

            問題為:
            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)
            );
            出錯
            那么現(xiàn)在使用
            create table test
            (
            id int not null primary key,
            name text,
            fulltext(name)
            )type=myisam;
            就可以解決
            或者把type用engine代替

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

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


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久久久国产精品美女| 久久这里只精品99re66| 色综合久久中文字幕无码| 三上悠亚久久精品| 久久久久久久综合日本亚洲| 精品国产婷婷久久久| 久久久久综合中文字幕| 一97日本道伊人久久综合影院| 性色欲网站人妻丰满中文久久不卡| 国产精品久久影院| 亚洲精品tv久久久久久久久久| 欧美熟妇另类久久久久久不卡| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 久久青草国产手机看片福利盒子 | 国产成人无码精品久久久免费| 久久人人超碰精品CAOPOREN| 午夜久久久久久禁播电影| 精品久久久久久国产牛牛app| 免费精品久久天干天干| 国产69精品久久久久99| 日韩精品久久无码人妻中文字幕| 爱做久久久久久| 亚洲精品无码久久久久sm| 久久精品18| 久久久久免费精品国产| 久久精品中文騷妇女内射| 狠狠色丁香久久婷婷综合_中 | 色天使久久综合网天天 | 久久精品人人做人人爽电影蜜月| 品成人欧美大片久久国产欧美| 久久精品国产99久久久古代 | 婷婷综合久久狠狠色99h| 精品无码久久久久国产| 日韩精品久久久久久免费| 久久亚洲AV无码西西人体| 国产成人综合久久精品尤物| 久久99国产精品一区二区| 好属妞这里只有精品久久| 久久91精品国产91久久麻豆| 国产精品青草久久久久婷婷 | 伊人久久免费视频|