台灣深藍vBulletin技術論壇  

返回   台灣深藍vBulletin技術論壇 > 深藍官方整理發表區 > 教學文件深藍官方整理區 > vBulletin3

回覆
 
主題工具
舊 2006-02-26, 12:04 PM   #1
論壇站長
 
註冊日期: 2004-10-06
住址: http://www.twvbb.com
文章: 1,574
預設 【教學】淺談論壇搜尋模式與方法

此文章由 台灣深藍vBulletin技術論壇 ckmarkhsu 撰寫,轉載請務必完整且註明

出處 http://www.twvbb.com/vbb/thread/15/530/

=========================================================

這麼多人在詢問,我以我粗淺的經驗來解釋一下 vBulletin 中文代理修正的中文搜尋方式好了^^"

MySQL 常用的搜尋(比對)有以下幾種

1. 完全相符比對(這不算搜尋喔)
PHP 代碼:
WHERE `pagetext` = '深藍' 
此語法的意思是,搜尋文章內容( pagetext 欄位 )等於 "深藍" 的資料,他只會比對完全相等

因此如果文章內容是 "嘿 深藍好無聊" 那就不會被選到,這種是三項中效率最高的條件式,但原始語法上最沒用

2. 相似比對(常用搜尋法)
PHP 代碼:
WHERE `pagetextLIKE '%要搜尋的文字%' 
此語法的意思是,搜尋文章內容( pagetext 欄位 )文字包含 "深藍" 的資料

因此如果文章內容是 "嘿 深藍好無聊"

其中包含深藍二字,就會被選到,這種是三項中效率最低的條件式,但最簡易使用

3. MySQL 全文搜尋(正規撰寫程式時常用搜尋法)
這語法有點複雜(其實是我不太會),大致上,他是用 正規表達式,配合關聯繫數去判斷

因此,如果你搜尋是 "Deep Blue is so stupid",文章內容包含 "Deep Blue is too stupid" 也可能會被搜尋到( 例子有點爛^^" )

這全看你的關聯係數與正規表達式怎麼下,這種是三項中效率次高的條件式,可惜不支援中文搜尋

第 3 種模式鐵定不能用,雖然他是英語系程式最正規的搜尋法,但可惜他不支援中文

第 2 種我寫程式很常用,因為效率較低,因此適用於小資料量的搜尋^^"

不過其實測試過,30 幾萬篇文章搜尋也沒什麼問題

那有沒有什麼方式,可以在幾百萬,甚至幾千萬筆資料中,快速搜尋出想要的文字!?

當然有 但要達到快速搜尋,一定要事先整理資料

因此,我們可以用以下的分析方式,配合第一種條件式來達到高速且精準的搜尋


以此這段句子為例,"虛空是台灣數一數二的技術論壇"

他會在 word 資料表中,存成: (以下每行為一筆資料紀錄)

(前面為編號,後面式 title 欄位儲存資料)

01 虛空
02 空是
03 是台
04 台灣
05 灣數
06 數一
07 一一
08 一數
09 數二
10 二的
11 的技
12 技術
13 術論
14 論壇

他會順便將這些關鍵字與該文章作連結( 這是一定要的 )

因此,如果你想搜尋 "台灣",系統就會執行這條件式

PHP 代碼:
SELECT postid FROM word WHERE tilte '台灣' 
系統便會發現,第 04 筆資料符合我們的搜尋條件,他會再依照 04 筆資料裡面與文章的對應,去把符合的回覆找出來

那如果我們想搜尋 "灣數" 這種怪異的詞句,可以嗎? 系統會執行這條件式

PHP 代碼:
SELECT postid FROM word WHERE tilte '灣數' 
系統便會發現,第 05 筆資料符合我們的搜尋條件

這是目前中文代理用在解決中文搜尋的方式(當然這只是最基本的理論,實際上沒這麼簡單)

但是無兩全,此方法雖好,也可以高效率精準搜尋到文章內容,但缺點是會增加 2 倍空間

這就看你怎麼取捨了,依我個人的建議

30萬文章以下的論壇,開啟 vBulletin中文版中內建的 "直接搜尋 post 表" (也就是第二種模式)即可

若您文章數量多,空間又無限大(例如自有主機),那你就可以試試看中文官方的搜尋模式啦
ckmarkhsu 目前離線   回覆時引用此篇文章
舊 2006-06-09, 07:32 PM   #2
Member
 
註冊日期: 2005-10-13
住址: www.bestword.net
文章: 31
預設

不只增加两倍空间哦
bestword 目前離線   回覆時引用此篇文章
舊 2006-06-12, 09:57 AM   #3
論壇站長
 
註冊日期: 2004-10-06
住址: http://www.twvbb.com
文章: 1,574
預設

引用:
作者: bestword
不只增加两倍空间哦
約是增加兩倍阿

您是怎麼計算的?
__________________
vBulletin 問題請在論壇討論,請勿私下詢問我,以利後人參考
ckmarkhsu 目前離線   回覆時引用此篇文章
舊 2006-06-12, 12:47 PM   #4
Senior Member
 
註冊日期: 2005-05-29
住址: http://mamba.zapto.org/bbs/
文章: 119
預設

引用:
作者: ckmarkhsu
約是增加兩倍阿

您是怎麼計算的?
如果和比big5來比的話是不止....
陳醉欣 目前離線   回覆時引用此篇文章
舊 2007-06-12, 02:54 PM   #5
Junior Member
 
註冊日期: 2007-03-28
住址: http://bbs.pop8.org/
文章: 3
預設

那我要是搜數一數呢
ICactioN 目前離線   回覆時引用此篇文章
回覆

書籤

主題工具

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為北京時間。現在的時間是 01:52 AM


Powered by vBulletin® 版本 3.7.3
版權所有 ©2000 - 2008,Jelsoft Enterprises Ltd.
Ad Management by RedTyger