2010-11-20 28 views
0

我想實現一些喜歡在wiki上搜索,當我想搜索「蘋果」時,我鍵入「a」它顯示單詞從「a」開始......我知道它可以實現當我鍵入時,我提交搜索文章的SQL查詢從「a」開始,但是當查詢請求越來越多時,它變得緩慢......有沒有什麼性能轉換技術可以做這種事情?謝謝。鍵入和搜索,如何提高性能?

回答

2

在服務器端,您應該緩存結果,理想情況是在內存中(例如:Memcached)。因此,如果有10人擊中「a」,那麼對數據庫只有一個查詢,而對存儲器只有9個超快速數據訪問。

至於帶寬優化,您應該以JSON或一些自定義數據格式發送您的數據。見這真棒文章:Building Fast Client-side Searches

1

不知道你使用的是什麼版本的SQL的,但有幾個假設:

  • 你必須在球場上,你正在尋找
  • 你只返回所需的字段(如標題)的指數,不選擇*

我會建議考慮是減少的行返回的數字取決於搜索查詢的大小,類似:(僞代碼,不知道你的SQL方言)

if len(searchString)<=3 
    select top 50 title from table order by title 
else 
    select title from table order by title 

較小的搜索可能會返回更多行,但大多數用戶可能會在停止鍵入之前輸入幾個字母,因此對於初始查詢,不要返回所有行。

0

不是一個技術性的答案的,也許不明顯,但對於客戶端,我認爲你不能在按鍵,但按鍵後X毫秒後,並隨病情推出搜索事件沒有什麼改變。

所以,如果我想尋找一個「字」,我輸入「W」「O」在一個快速的方式「R」,「d」你只會使UNE請求,很明顯,你可以優化該請求SQL方式