iT邦幫忙

0

大量資料搜尋

ahan 2008-08-22 11:33:256278 瀏覽
  • 分享至 

  • xImage

請教各位大大

目前預計約會有50萬 ~ 100萬筆的商品資料
每筆商品約會有30個關鍵字左右
使用php+mysql
請問在資料表結構、或搜尋方法上是否有什麼建議
可讓搜尋的效率好一些
謝謝 ^^

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
22
灌籃高手
iT邦高手 1 級 ‧ 2008-08-22 12:32:16
最佳解答
  1. 關鍵字搜尋的話建議用全文檢索,可以支援進階的搜尋語法,例如AND/OR,也可以依關鍵字的關連度排序,例openfind推出的OES等,會比資料庫query快
  2. 使用mysql replication,把query指向一台或多台slave
  3. 利用cache功能,cache query resultset 或 page
  4. 使用高階的server,多CPU, RAM, SATA HD,加快查詢速度
  5. 資料結構方面,資料表myisam會比innodb快一些,建索引,正規化,my.cnf可以參考my-huge.cnf的設定做調整,主要是跟記憶體相關的設定
ahan iT邦新手 5 級 ‧ 2008-08-23 19:06:56 檢舉

所以其實就是做好基本功就可應對了,是這麼說嗎 ^^
亦或有程式撰鴁上的技巧或演算方式 可加快它的效率

鐵殼心 iT邦高手 1 級 ‧ 2008-08-24 15:22:24 檢舉

RAM有多大就給他多大, CPU可以改用Xeon系列的, 運算效能會比Core 2系列的好.

liesan iT邦新手 5 級 ‧ 2008-08-25 10:36:57 檢舉

如果就只對搜尋快一點這件事來說,建立索引或是提升硬體設備都是解決方法之一。
但是有幾個問題是您需要注意的,

  1. 透過資料庫提供的方法也許可以勉強滿足你搜尋效能上的需求,但是你的資料庫只是要用來搜尋用嗎?資料庫的課題太多,包含支援多元化的應用、提昇資料的安全性、交易的ACID,當你上線之後,你的資料庫可以說是個大忙人,你把所有的雞蛋丟到一個籃子裡OK嗎?你為了效率調整了資料表對其它功能上的需求會不會有影響?
  2. 同樣的,查詢的效率只是DB的一個Issue,但是就算是ORACLE之類的大廠,在這一方面頂多只是good,還不算是great,大部分都是硬體怪獸,要用很好的伺服器來撐。
  3. 你的資料量是不變的嗎?當你勉強得加快一些速度之後,當資料量不斷得增加,欄位也變多了,你還是要回頭處理這個問題,而且會更複雜,負擔更沉重。
  4. "搜尋"這個需求一點也不單純,當使用者有了基本的搜尋後,他可能還要搜尋建議,同義詞,相關詞,等相關的需求,很快就會如雨後春筍般的冒出來,您有預留了空間來解決相關的問題嗎?

所以結論是,我認為您要仔細思考您所遇到的問題中背後的問題,搜尋是一門專門的學問,不要把框框限制再資料庫,演算法上而已,尋求專業搜尋引擎的軟體幫忙才是解決之道,試想...如果搜尋那樣單純,那google還玩什麼呢?

12
hymanlin
iT邦新手 5 級 ‧ 2008-08-23 08:48:55

30個關鍵字???,是否拆解資料表會不會好些,正規化一下

10
aleen
iT邦新手 5 級 ‧ 2008-08-25 11:14:46

ahan提到預計約會有50萬~100萬筆的商品資料,
ahan應該是做電子商務之類的吧^^
如果是的話,預計資料量可是會逐步成長的喔~

因為根據aleen的經驗,
Database的數據量超過數百萬筆之後,
用原本資料庫的搜尋功能,
SQL command的查詢速度將越來越慢......
(你會有很想殺人的感覺><)
建議ahan可以參考使用企業在用的搜尋軟體,
這方面資訊網路上提供很多,
剛好上面前輩scottchen也有提到openfind推出的OES等,
會比資料庫query快,
小妹剛好也有使用過唷,效果出期的好,
也不會因為資料庫停擺,而造成查詢中斷,
另外有配合會員權限去做搜尋,很符合aleen的需求^^
(他們有巨量搜尋的實證,難怪進行搜尋時效能的準確度好的咧~)
建議ahan可以參考看看,
http://www.openfind.com.tw/OES
反正他們有提供免費試用軟體,
try try看那ㄧ個符合你的需求吧!
(聽說他們9月要出新版是特別針對資料庫,
前一陣子有看到報導,ahan可以再特別留意看看,
是不是符合你的需求囉)

chyshen iT邦新手 5 級 ‧ 2008-08-25 12:45:16 檢舉

針對資料表結構、搜尋方法上有什麼建議可讓搜尋的效率好一些的?
我想尋求專業的搜尋引擎軟體幫忙才是根本的解決之道,除了可多家測試(Openfind OES、Google、凌網…等)、提升硬體設備還有資料的結構化與分類整合…等,其實"搜尋"這一塊蠻複雜的…而像Openfind這家廠商就我所知,本身就是做入口網站與搜尋引擎起家的,到現在也推出了上述所提企業搜尋用的 OES,建議都可先列入評估與參考唷^^

我要發表回答

立即登入回答