• <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年3月>
            2425262728291
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            統(tǒng)計(jì)

            • 隨筆 - 85
            • 文章 - 0
            • 評(píng)論 - 17
            • 引用 - 0

            常用鏈接

            留言簿(6)

            隨筆分類

            隨筆檔案

            收藏夾

            全是知識(shí)啊

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

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



            引言:

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

            正文:

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


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

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

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


            下面大概介紹一下創(chuàng)建全文索引的過程,主要有兩種辦法:
            第一種是創(chuàng)建表的時(shí)候就創(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號(hào)
            +----+
            | 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)建表的時(shí)候就創(chuàng)建全文索引

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


            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
            [主要介紹了全文檢索的一些語法知識(shí)等]
            另外,如果想要看最原始的資料,請上mysql官方網(wǎng)站,http://www.mysql.com
            大家注意拉,mysql5以后才支持視圖和存儲(chǔ)過程
            要是想要使用這些東西,可以到www.mysql.cn或者www.phpchina.cn下載mysql5.0.18哦

            1)下面是mysql下存儲(chǔ)過程的使用
            http://www.mimi163.net/cs/wenzhang/2006/3/16/996.htm
            有時(shí)間寫篇關(guān)于mysql和其他數(shù)據(jù)庫存儲(chǔ)過程使用的比較,呵呵
            感覺這個(gè)東西還是很有用的拉
            2)另外,這里有一篇介紹php怎么調(diào)用mysql的存儲(chǔ)過程的
            也是相當(dāng)?shù)牟诲e(cuò),呵呵
            http://www.ithack.net/Articles/php/2005052595601.html

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

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

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

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

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

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


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


            久久精品无码一区二区app| 99精品久久精品一区二区| 波多野结衣中文字幕久久| 99久久99久久久精品齐齐| 精品久久国产一区二区三区香蕉| 久久国产精品视频| 亚洲成色www久久网站夜月| 久久免费视频观看| 噜噜噜色噜噜噜久久| 久久国产热精品波多野结衣AV| 久久99国产精品久久99| 久久精品国产男包| 久久久久亚洲AV成人片| 色综合久久天天综线观看| 久久国产乱子精品免费女| 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久综合一区二区无码| 久久久久女人精品毛片| 免费一级欧美大片久久网| 国产国产成人精品久久| 久久无码中文字幕东京热| 丁香五月综合久久激情| 狠狠色丁香久久综合五月| 无码精品久久久久久人妻中字| 99久久精品免费国产大片| 久久国产香蕉视频| 久久久久久久久久久久中文字幕 | 青青青青久久精品国产| 久久久久免费精品国产| 色偷偷88欧美精品久久久| 国内精品欧美久久精品| 91久久精一区二区三区大全| 一级做a爰片久久毛片看看| 久久国产亚洲精品麻豆| 天堂久久天堂AV色综合| 中文字幕久久波多野结衣av| 欧美亚洲国产精品久久| 久久久久久国产精品无码下载| 国产AV影片久久久久久| 国产成人精品久久亚洲高清不卡 | 久久亚洲综合色一区二区三区|