2010-11-08 53 views
3

我在網頁上有此文本輸入字段。用戶輸入項目名稱進行購買。我想根據目前輸入的字母提供可能名稱的下拉菜單。從內存中收集(.NET)的快速自動完成

問題是如何在服務器上實現搜索(ASP.NET MVC)。我可能會在應用程序啓動的靜態變量中加載整個項目名稱集合(有超過100 000個)。我應該如何實現從給定一個或多個字符開始的有效搜索名稱?

TIA

回答

2

您可以按名稱集合,然後寫一個返回範圍內的項目的改進型二分查找。

但是,我會建議先嚐試一個簡單的順序搜索並查看其在負載下的行爲。

1

我可能會加載整個 集合項目的名稱(有 超過100 000)在 應用程序啓動一個靜態變量。我應該如何實現 高效搜索名稱從 開始的給定一個或多個字符?

通過NOT(!)將它們加載到靜態變量中。使用「top 101」子句在每個請求上打擊數據庫服務器。成品。

+1

TomTom,真的嗎?有時這個頁面負載很重。自動完成必須是即時的。打開數據庫以獲取只讀數據違反了我聽說過的所有最佳做法。必須有一個原因,ppl正在使用Memcached和Velocity。 – 2010-11-08 18:22:04

+0

是的,真的。或預緩存結果(即條目字符串,返回的結果),這可以通過IIS輸出緩存完成。不要重新實現數據庫。如果oyu需要更多的db服務器來獲取它們。編程會讓你付出更多。 – TomTom 2010-11-08 18:26:20