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


            久久亚洲精品中文字幕| 久久久久久久91精品免费观看| 久久精品国产亚洲av麻豆蜜芽 | 亚洲精品tv久久久久久久久久| 久久人妻少妇嫩草AV蜜桃| 久久天天躁狠狠躁夜夜躁2014| 精品久久久久久成人AV| 久久这里有精品视频| 久久99国产综合精品| 久久人人爽人人爽AV片| 国产精品久久成人影院| 久久亚洲AV无码西西人体| 99国产精品久久| 久久精品国产99国产精品导航| 国产99久久久国产精品~~牛| 中文字幕亚洲综合久久菠萝蜜| 国内精品伊人久久久久| 亚洲精品国产美女久久久| 久久婷婷五月综合色99啪ak | 国内精品九九久久精品| 伊人久久综在合线亚洲2019| 亚洲va中文字幕无码久久不卡| 久久综合精品国产一区二区三区 | 亚洲人成精品久久久久| 久久久精品无码专区不卡| 久久精品亚洲日本波多野结衣| 日本五月天婷久久网站| 亚洲Av无码国产情品久久| 大蕉久久伊人中文字幕| 97精品国产97久久久久久免费 | 欧美久久久久久精选9999| 国产午夜精品久久久久九九电影| 欧美黑人激情性久久| 久久精品卫校国产小美女| 老男人久久青草av高清| 国产精品久久久久免费a∨| 大香伊人久久精品一区二区| 亚洲婷婷国产精品电影人久久| 久久亚洲精品国产亚洲老地址| 中文字幕精品久久久久人妻| 伊人色综合久久天天人守人婷|