程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL中文全文索引插件 mysqlcft 1.0.0 安裝使用文檔

MySQL中文全文索引插件 mysqlcft 1.0.0 安裝使用文檔

編輯:MySQL綜合教程

MySQL在高並發連接、數據庫記錄數較多的情況下,SELECT ... WHERE ... LIKE '%...%'的全文搜索方式不僅效率差,而且以通配符%和_開頭作查詢時,使用不到索引,需要全表掃描,對數據庫的壓力也很大。MySQL針對這一問題提供了一種全文索引解決方案,這不僅僅提高了性能和效率(因為MySQL對這些字段做了索引來優化搜索),而且實現了更高質量的搜索。但是,至今為止,MySQL對中文全文索引無法正確支持。

  中文與西方文字如英文的一個重要區別在於,西方文字以單詞為單位,單詞與單詞之間以空格分隔。而中文以字為單位,詞由一個或多個字組成,詞與詞之間沒有空格分隔。當試圖在一個含有中文字符的字段中使用全文搜索時,不會得到正確的結果,原因在於中文中沒有像英文空格那樣對詞定界,不能以空格作為分割,對中文詞語進行索引。

  引用《MySQL 5.1參考手冊》中的一段話:
12.7. 全文搜索功能(http://dev.mysql.com/doc/refman/5.1/zh/functions.html
● MySQL支持全文索引和搜索功能。MySQL中的全文索引類型FULLTEXT的索引。FULLTEXT 索引僅可用於 MyISAM 表;他們可以從CHAR、 VARCHAR或TEXT列中作為CREATE TABLE語句的一部分被創建,或是隨後使用ALTER TABLE 或 CREATE INDEX被添加。對於較大的數據集,將你的資料輸入一個沒有FULLTEXT索引的表中,然後創建索引, 其速度比把資料輸入現有FULLTEXT索引的速度更為快。

● FULLTEXT分析程序會通過尋找某些分隔符來確定單詞的起始位置和結束位置,例如' ' (間隔符號)、 , (逗號)以及 . (句號 )。假如單詞沒有被分隔符分開,(例如在中文裡 ), 則 FULLTEXT 分析程序不能確定一個詞的起始位置和結束位置。為了能夠在這樣的語言中向FULLTEXT 索引添加單詞或其它編入索引的術語,你必須對它們進行預處理,使其被一些諸如"之類的任意分隔符分隔開。

● 諸如漢語和日語這樣的表意語言沒有自定界符。因此, FULLTEXT分析程序不能確定在這些或其它的這類語言中詞的起始和結束的位置。

  國內已有的MySQL中文全文索引解決方案有兩個:一是海量科技的MySQL5.0.37--LinuxX86-Chinese+,二是hightman開發的mysql-5.1.11-ft-hightman,兩者都是基於中文分詞技術,對中文語句進行拆分。但是,兩者都有弊端,一是不支持64位操作系統;二是對修改了MySQL源碼,只支持某一MySQL版本,不便於跟進新版本;三是詞庫不能做到很大很全,對於專業性質較強的數據庫內容(例如搜索“頤和園路東口”、“清華東路西口”等公交站點,“萊鎮香格裡”、“碧海雲天”等樓盤名稱),基於中文分詞的全文索引經常搜索不出來任何內容,即使添加分詞詞庫,也不會很全面。

  由於精准全文查詢的需要,我借鑒了二元交叉切分算法的思想,用自創的“三字節交叉切分算法”,寫出了這款“MySQL中文全文索引插件──mysqlcft 1.0.0”。由於開發時間倉促,難免存在未發現的問題,這將後續的版本中不斷完善。對於百萬條記錄的MySQL表進行全文檢索,mysqlcft已經夠用。

  • 共9頁:
  • 上一頁
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 下一頁

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved