Re: [SQL ] 如何改善 LIKE '%search%' 的效能?

看板Database (資料庫)作者 (畢業了..@@")時間7年前 (2017/08/27 22:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串18/18 (看更多)
一般資料庫只支援一般的檢索,也就是根據column值的順序 如果是字串的話,就是根據第一個字的順序,一樣的話就再看第二個,以此類推。 而ES是用全文檢索,裡面的 index 是 inverted index 如果拿書本當比喻. 目錄就是index, 書最後的面的索引就是inverted index 通常會把文章的內容做斷詞,再根據詞去做 inverted index ES支援cluster,可以把文件根據 key 去決定分到哪一個機器 查詢的時候就可以分散在各台機器做查詢,最後再把結果彙整 我想一般商業網站用ES就夠了 除非要做到像是 google/ bing/ 百度這種層級才需要做更複雜的全文檢索 ※ 引述《liisi (小心一點)》之銘言: : 想請問一下 假於架設另一台server跑同步 : 比如說 商品資料 有百萬筆 : 即使我在另一台db作serach : 但是資料量一樣的話 透過模糊搜尋的時間 不也會一樣嗎? : 另外 我去試了一下 蝦皮或是奇摩拍賣的網站 : 他們的商品 都是破億的!! : 我透過奇摩 輸入2組關鍵字作搜尋 : 結果不到一秒 就跑出結果來 (好快...) : 如果不是主機強大的話 : 也是透過ES做到的嗎? : ※ 引述《DarkKiller (System hacked)》之銘言: : : 居然是十年前的文章... (想說居然是 Xapian...) : : 如果你的資料量還會再增加的話,現在主流的方式是用 Elasticsearch (ES) 架 : : 設,你可以翻翻這本中文書:(雖然是講怎麼分析的,但 ES 本身就有全文搜尋的 : : 能力) : : https://www.kingstone.com.tw/book/book_page.asp?kmcode=2013120359772 : : 如果沒辦法另外架設服務的話,另外架一台 MySQL server 跑 replication 同步 : : ,這台 server 獨立給 search 用也是一個方法... (國內某大站台以前是這樣的 : : 架構) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.224.134 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1503843430.A.B50.html
文章代碼(AID): #1PejHcjG (Database)
討論串 (同標題文章)
文章代碼(AID): #1PejHcjG (Database)