2010-01-05 68 views
4

我是一個.NET WinForms/ASP.NET開發人員,我認爲這是關於如何在大型數據集上實現「提前自動完成」的技術不可知論問題。如果有人能指點一個參考實現或詳細的討論,這將是巨大的,但這裏是我的問題:使用什麼策略在大型數據集上實現類型提前自動完成?

  1. 據推測,用戶開始輸入和一些間隔之後,客戶端請求數據的服務器提前完成類型。這段時間有多長?這個經驗法則是否隨着要搜索的數據集增長而改變?如果用戶再次開始輸入,但由於數據集的大小,前一個查詢尚未完成,該怎麼辦?

  2. 什麼查詢策略用於拉數據集?顯然,查詢必須是異步的,但它不是一個簡單的SQL「%search term%」嗎?使用了哪些文本匹配策略?該數據集緩存的嚴格程度如何?如果它太大而無法緩存呢?

  3. 當我們談論使用AJAX與胖客戶端桌面應用程序的Web客戶端時,是否有任何不同的策略需要考慮?

在某些時候我會看看特定的.NET實現,但是我現在對這個階段的策略更感興趣。

回答

3

要解決您的第一個問題: 您必須考慮一定數量的性能特定考慮事項。與快速和非超載數據庫(甚至可能是本地數據庫)具有低延遲高帶寬連接的系統可以更加積極地輪詢服務器,併爲最終用戶提供完全不同的自動完成體驗。

對於互聯網應用程序,一般的經驗法則是用戶必須在基於服務器的自動完成功能開始前輸入三個字符。在某些情況下,這完全改變。

我想這也解決了第三個問題的一部分。

+0

三個字符是一個有用的經驗法則,但如果用戶在搜索返回之前再次開始鍵入,該怎麼辦? – flipdoubt 2010-01-05 19:32:45

+0

您可以返回一個較大的結果集,並在客戶端將其過濾到具有自上次響應後輸入的字符的子集。如果他們輸入的速度比自動填充功能的響應速度快,並且他們輸入的內容始終是服務器提供的建議之外的細化內容,那麼自動完成功能無論如何不會對他們有所幫助。 – jball 2010-01-05 19:52:17

相關問題