• <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提供全文索引和搜索的功能。

            正文:

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


            1) 很多互聯(lián)網(wǎng)應(yīng)用程序都提供了全文搜索功能,用戶可以使用一個(gè)詞或者詞語(yǔ)片斷作為查詢項(xiàng)目來(lái)定位匹配的記錄。在后臺(tái),這些程序使用在一個(gè)SELECT查詢中 的LIKE語(yǔ)句來(lái)執(zhí)行這種查詢,盡管這種方法可行,但對(duì)于全文查找而言,這是一種效率極端低下的方法,尤其在處理大量數(shù)據(jù)的時(shí)候。
              MySQL 針對(duì)這一問(wèn)題提供了一種基于內(nèi)建的全文查找方式的解決方案。在此,開發(fā)者只需要簡(jiǎn)單地標(biāo)記出需要全文查找的字段,然后使用特殊的MySQL方法在那些字段 運(yùn)行搜索,這不僅僅提高了性能和效率(因?yàn)镸ySQL對(duì)這些字段做了索引來(lái)優(yōu)化搜索),而且實(shí)現(xiàn)了更高質(zhì)量的搜索,因?yàn)镸ySQL使用自然語(yǔ)言來(lái)智能地對(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ù)庫(kù),將數(shù)據(jù)裝載到一個(gè)沒(méi)有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 創(chuàng)建索引,這將是非常快的。將數(shù)據(jù)裝載到一個(gè)已經(jīng)有 FULLTEXT 索引的表中,將是非常慢的。

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


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

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

            mysql> create database ftt;   --創(chuàng)建數(shù)據(jù)庫(kù)
            Query OK, 1 row affected (0.03 sec)
            mysql> use ftt;           --使用數(shù)據(jù)庫(kù)
            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);   --通過(guò)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'); --通過(guò)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í)的語(yǔ)法


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

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

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

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

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

            問(wèn)題為:
            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
            我自己試了后精簡(jiǎn)說(shuō)一下:

            問(wèn)題:
            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竟然沒(méi)有這個(gè)問(wèn)題,但是使用mysql5.0的時(shí)候到出現(xiàn),不過(guò)用上面辦法就解決拉

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


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


            热re99久久6国产精品免费| 亚洲国产成人久久综合碰| 色欲av伊人久久大香线蕉影院| 久久久久久噜噜精品免费直播| 午夜精品久久久久久影视777| 亚洲午夜久久久久久噜噜噜| 高清免费久久午夜精品| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 97久久国产综合精品女不卡| 久久精品国产亚洲av影院| 99久久精品免费观看国产| 亚洲国产精品无码久久久蜜芽| 国产日韩久久免费影院| 国产成年无码久久久免费| 国产亚州精品女人久久久久久| 久久久国产99久久国产一| 一本久久久久久久| 久久久久亚洲av无码专区| 久久精品国产亚洲精品| 久久青青草原国产精品免费 | 久久久午夜精品| 国产免费久久精品99久久| 精品国产乱码久久久久久1区2区 | 久久亚洲国产成人影院| 久久99精品久久久久久秒播| 日本道色综合久久影院| 成人妇女免费播放久久久| 久久综合精品国产二区无码| 久久久黄色大片| 久久99热这里只有精品国产| 久久久黄色大片| 久久香综合精品久久伊人| 精品久久久久久久国产潘金莲| 久久天天躁狠狠躁夜夜2020 | 久久99国产精品尤物| 亚洲中文字幕无码久久2020| 久久人人爽人人人人爽AV| 精品国产青草久久久久福利| 77777亚洲午夜久久多喷| 一本色道久久88—综合亚洲精品| 香蕉久久夜色精品升级完成|