多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > 數(shù)據(jù)庫(kù) > MySql > PHP+MYSQL 簡(jiǎn)單實(shí)現(xiàn)中文分詞全文索引

PHP+MYSQL 簡(jiǎn)單實(shí)現(xiàn)中文分詞全文索引

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-02-09 02:52:07 閱讀次數(shù):3835次
相信很多人都研究過(guò)MYSQL的中文全文索引問(wèn)題,目前MYSQL不支持中文全文索引,無(wú)奈~~~

  網(wǎng)上找了N多關(guān)于PHP+MYSQL中文全文索引的文章都沒有一個(gè)好用的,對(duì)于一般的菜鳥根本不知道怎么使用,PHP中文分詞有DDEDE的,DEDE的詞庫(kù)不是很強(qiáng)大,還算可以用吧!

  還有一個(gè)是《SCWS - 簡(jiǎn)易中文分詞系統(tǒng)》這個(gè)目前對(duì)于一般菜鳥根本不知道怎么用,雖然有人編譯了Windows版的,但安裝還是挺麻煩的,我尚未測(cè)試過(guò)!

  //==========================

  廢話不多說(shuō)了,首先去DEDE下載分詞算法函數(shù)和詞庫(kù);下載地址:http://www.dedecms.com/html/chanpinxiazai/20061229/3.html

  里面有詳細(xì)的使用說(shuō)明,我在這里舉一個(gè)使用的例子;

  MYSQL表名:music

  字段:title,tag

  

  require("lib_splitword_full.php");

  $str = "這里是你要分詞的內(nèi)容,一般不要超過(guò)1024KB會(huì)好一點(diǎn),否則會(huì)很慢!";

  $sp = new SplitWord();//實(shí)例化

  $dd = explode(" ",$sp->SplitRMM($str));

  $i=0;

  foreach ($dd as $key=>$var) {

  if (strlen($var)>2)//UTF8編碼的請(qǐng)?jiān)O(shè)置為3,因?yàn)閁TF8編碼的中文一般為3個(gè)字節(jié)以上,過(guò)濾單個(gè)字不保存!

  {

  $str.=base64_encode($var)." ";//由于MYSQL不支持中文全文索引,所以在分詞中我們必須把詞轉(zhuǎn)換成字母或者數(shù)字,這里我選擇了base64編碼

  //當(dāng)然大家還可以把中文轉(zhuǎn)成區(qū)碼,但我測(cè)試過(guò)區(qū)碼的方法,感覺很一般,所以在這樣我推薦大家使用base64

  $i++;

  }

  if ($i>=50) break;//這里是設(shè)置你要存儲(chǔ)多少個(gè)詞組,如果是文章可能會(huì)有N多詞組,你可以設(shè)置大一點(diǎn),但如果你對(duì)標(biāo)題分詞的話,50個(gè)已經(jīng)足夠了!

  //這樣運(yùn)行未編碼得出來(lái)的結(jié)果:這里 分詞 內(nèi)容 一般 不要 超過(guò) 1024KB 一點(diǎn) 否則

  //base64編碼后的結(jié)果:1eLA7w== t9a0yg== xNrI3Q== 0ruw4w== srvSqg== s6y5/Q== MTAyNEtC 0ru14w== t/HU8g==

  }

  ?>

  這樣我們就可以把分好詞而且轉(zhuǎn)換成編碼的分詞存進(jìn) tag 字段了,當(dāng)然tag字段必須設(shè)置成全文索引 full text 而且數(shù)據(jù)表類型必須為MyISAM。

  tag字段數(shù)據(jù)類型為CHAR和VARCHAR、text,有關(guān)如何創(chuàng)建MYSQL全文索引,大家可以搜索一下《mysql創(chuàng)建索引》遍地開花,到處都是!

  下面的例子是根據(jù)TAG字段的內(nèi)容進(jìn)行全文索引查詢:

  

  include("Mysql.class.php");

  $rs = $DB->get_one("select title,tag from music where id=$id");//根據(jù)ID讀取title和tag字段內(nèi)容

  $title = $rs['title'];

  $sql = $DB->query("select title,MATCH(tag) AGAINST('".trim($rs['tag'])."' IN BOOLEAN MODE) AS score from music where MATCH(tag) AGAINST('".trim($rs['tag'])."' IN BOOLEAN MODE) ORDER BY score DESC limit 21");//這里是查詢20條相似的內(nèi)容,而且按相似的排序,21是因?yàn)橥粭l記錄都會(huì)匹配出來(lái)!

  while ($rs = $DB->fetch_array($sql))

  {

  if ($rs['title']!=$title)

  {

  echo $rs['title']."
";

  }

  }

  $DB->close();

  ?>

  如果大家想看效果可以到我的小站看演示:http://www.dj965.com

  以上的例子就實(shí)現(xiàn)了PHP+MYSQL簡(jiǎn)單的中文分詞全文索引!

  希望對(duì)跟我一樣的菜鳥有一定的幫助吧!

  本人BLOG:http://hi.baidu.com/web20/

文章來(lái)自:http://www.admin5.com/article/20080717/94313.shtml
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产成人福利美女观看视频 | 国产成人美女福利在线观看 | 国产精品亚洲精品日韩己满十八小 | 久久精品久 | 激情啪啪精品一区二区 | 亚洲精品一区二区三区五区 | 中文字幕在线观看2022 | 五月天综合久久 | 性xx视频| 亚洲一区精品伊人久久伊人 | 欧美人与动性行为另类 | 欧美刺激性色黄大片18 | 亚洲女人影院想要爱 | 不卡午夜视频 | 欧美一区二区三区影院 | 亚洲美日韩| 18videosex性加拿大 | 久久免费精品国产72精品剧情 | 国产精品自拍在线观看 | 影视先锋av资源噜噜 | 亚洲国产成a人v在线观看 | 最新色网址 | 欧美久久一区二区三区 | 久久亚洲美女久久久久 | 亚洲人成影网站~色 | 夜夜伊人 | 男女自偷自拍视频免费观看篇 | 在线观看美女网站 | 成年人网站免费视频 | 亚洲一区二区三区精品国产 | 九九精品成人免费国产片 | 最近好中文字幕国语免费高清 | 高清视频一区二区 | 亚洲精品小说 | 欧美三级艳星xxxxxx | 亚洲欧美久久婷婷爱综合一区天堂 | 日韩专区欧美 | 久久不卡视频 | 久久天堂色 | ak福利午夜在线观看 | 亚洲国产精品乱码在线观看97 |