建立SQL全文索引提升搜尋速度

來源:互聯網
上載者:User

要實現搜尋引擎的模糊尋找功能,使用SQL的關鍵字LIKE來實現模式比對。

    現在我們有一個資料庫,表名叫T1,有記錄數一萬條。Title欄位是文字欄位,長度為255,Body為備忘欄位。看下面的SQL語句:

Select * From T1 Where Title Like '%迅雷%'

    則這句話就是要返回Table1表中Title欄位裡包含‘迅雷’的所有記錄。由於Title是文字欄位,長度也不大,故其尋找速度還可以接受。

    現在我們要返回Title或Body欄位中包含‘迅雷’的所有記錄:

Select * From T1 Where Title Like '%迅雷%' Or Body Like '%迅雷%'    速度慢了許多倍,這樣的速度用於Web搜尋,使用者會有這個耐心去等待嗎?

    如何解決在模糊尋找中的速度問題,這就是我們今天要引出的全文索引的話題。

    關於全文索引,一個能說明問題的例子就是:

    給你一本你沒看過的書,指定書裡面存在的一句話讓你去尋找,而且不能看目錄(索引),那麼你只能一頁一頁的翻書本去尋找了,想一想,你對這本書的內容也不瞭解,這樣的尋找速度會快嗎?

    如果允許看目錄(索引),根據目錄(索引)的指引,你也許會更快的找到(如果這個索引和要尋找的話關聯性大)。另外,我們再假如你很喜歡這本書,並且每天閱讀,過一段時間,你已經對書本的內容了如指掌,這個時候,讓你再找一段話,你是不是一下子便能知道這句話大概的位置?然後根據大概位置在附近尋找,然後很快定位搜尋結果。這其實可以說是你已經在你的腦子裡為這本書建立了全文索引。

    SQL全文索引就是將資料庫的記錄按詞語做了事先的索引,以便在模糊尋找的時候能提升速度。這些索引的詞語,對於英文,每兩個單詞之間有一個空格,可中文不一樣了,這涉及到中文分詞技術。我們在使用資料庫引擎的時候,引擎的全文索引其實已經使用了分詞的技術,當然這並不能從表面所看到。

    我們以MS SQL Server 2000為例,說明如何建立全文索引。

    1、啟動全文索引。在Microsoft SQL Server >> SQL Server 組 >> (LOCAL) (Windows NT) >> 支援服務 >> 全文檢索索引 >> 右鍵菜單元 >> 啟動;

    2、對資料庫建立全文檢索目錄。在Microsoft SQL Server >> SQL Server 組 >> (LOCAL) (Windows NT) >> 資料庫 >> 全文檢索目錄 >> 右建菜單 >> 建立全文檢索目錄;

    3、對所要建立全文索引的表建立全文索引。在Microsoft SQL Server >> SQL Server 組 >> (LOCAL) (Windows NT) >> 資料庫 >> 你的資料庫名 >> 表 >> 雙擊 >> 在右側列表中選擇要建立全文索引的資料表 >> 右建菜單 >> 全文索引表 >> 在表上定義全文索引 , 按嚮導,選擇要建立全文索引的欄位和全文檢索目錄,完成操作。注意,你的資料表必須有主鍵,否則會出現如下錯誤提示:“所選表中沒有在不允許 NULL 的列上的唯一單個列索引”。

    4、對上一步建立全文索引時選擇的全文檢索目錄進行填充。在Microsoft SQL Server >> SQL Server 組 >> (LOCAL) (Windows NT) >> 資料庫 >> 全文檢索目錄 >> 雙擊 >> 在右側列表中選擇全文檢索目錄 >> 右建菜單 >> 啟動完全填充。注意,填充是需要時間的。

    這樣,給資料表建立全文索引之後我們就可以使用CONTAINS來檢索了:

Select * From T1 Where Title Like '%迅雷%' OR CONTAINS(Body, '%迅雷%')    試一試查詢速度,第一次查詢速度還是很慢,當查詢駐入記憶體之後,查詢就快了。已免強可以接受。但第一次查詢速度慢的問題還需要解決,並且以後的查詢離百度搜尋速度還有很大距離。就是說還有很多地方可以完善的 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.