|
#1
|
|||
|
|||
淺談論談搜尋模式與方法
此文章由 台灣深藍vBulletin技術論壇 ckmarkhsu 撰寫,轉載請務必完整且註明
出處 http://www.twvbb.com/vbb/showthread.php?t=530 ========================================================= 這麼多人在詢問,我以我粗淺的經驗來解釋一下 vBulletin 中文代理修正的中文搜尋方式好了^^" MySQL 常用的搜尋(比對)有以下幾種 1. 完全相符比對(這不算搜尋喔:P)
2. 相似比對(常用搜尋法)
3. MySQL 全文搜尋(正規撰寫程式時常用搜尋法) 這語法有點複雜(其實是我不太會XD),大致上,他是用 正規表達式,配合關聯繫數去判斷 第 3 種模式鐵定不能用,雖然他是英語系程式最正規的搜尋法,但可惜他不支援中文 第 2 種我寫程式很常用,因為效率較低,因此適用於小資料量的搜尋^^" 不過其實測試過,30 幾萬篇文章搜尋也沒什麼問題:P 那有沒有什麼方式,可以在幾百萬,甚至幾千萬筆資料中,快速搜尋出想要的文字!? 當然有 但要達到快速搜尋,一定要事先整理資料 因此,我們可以用以下的分析方式,配合第一種條件式來達到高速且精準的搜尋 以此這段句子為例,"虛空是台灣數一數二的技術論壇" 他會在 word 資料表中,存成: (以下每行為一筆資料紀錄) (前面為編號,後面式 title 欄位儲存資料) 01 虛空 02 空是 03 是台 04 台灣 05 灣數 06 數一 07 一一 08 一數 09 數二 10 二的 11 的技 12 技術 13 術論 14 論壇 他會順便將這些關鍵字與該文章作連結( 這是一定要的:P ) 因此,如果你想搜尋 "台灣",系統就會執行這條件式 PHP 代碼:
那如果我們想搜尋 "灣數" 這種怪異的詞句,可以嗎? 系統會執行這條件式 PHP 代碼:
這是目前中文代理用在解決中文搜尋的方式(當然這只是最基本的理論,實際上沒這麼簡單) 但是無兩全,此方法雖好,也可以高效率精準搜尋到文章內容,但缺點是會增加 2 倍空間 這就看你怎麼取捨了,依我個人的建議 30萬文章以下的論壇,開啟 vBulletin中文版中內建的 "直接搜尋 post 表" (也就是第二種模式)即可 若您文章數量多,空間又無限大(例如自有主機),那你就可以試試看中文官方的搜尋模式啦 |