簡體   English   中英

搜索數據以自動完成文本的最佳方法

[英]Best way to search data for text auto-complete

我遇到了一個問題,需要在基於人員姓名的文本字段下方顯示建議的/自動完成的結果。 我應該將每個人都加載到列表中並在啟動時作為集合進行排序,還是可以在數據庫中按名稱索引,並且只能選擇SELECT行,該行中人名以給定的字符序列開頭?

當然,我寧願不必在內存中保留一個潛在的巨大列表,因此,如果有人可以建議我如何在此處使用SQL,那將非常棒,謝謝。

我認為將所有內容收集起來將是整個名稱的開銷

途徑

  1. 用戶輸入第一個字符后,即可進入數據庫。 將數據放入用於排序的唯一值的集合(首選樹集 )中。
  2. 之后使用一些Java邏輯過濾集合中的數據
  3. 一旦用戶刪除了第一個字符,則在命中數據庫后用新的集合重新加載集合

在DB中查詢表 :如果每次都進行db調用,這將相對較慢。

在中間層存儲 :這將比db調用更快。 但是在這里您可以再次使用多種方法。

1)從數據庫中獲取數據並存儲
2)預填充緩存,然后查詢您的緩存。

在客戶端存儲 :將數據/名稱存儲在js文件中,並使用js庫以高效的方式執行搜索。 我已經嘗試過這個js庫,發現它相當不錯WICK:Web Input Completion Kit
現在html 5也支持本地存儲,因此您也可以對此進行評估。

因此,您需要評估所有選項,然后找到所需的一個

提供AJAX函數,該函數是DB的用戶name like 'input%' to DB )的有效列表。

在您的輸入字段中調用此函數onkeyPress()事件

自動完成是指根據用戶輸入的字符搜索結果,我只是使用此查詢檢索與模式匹配的行。

   SELECT uname FROM table WHERE uname like 'cha%';

這里cha是用戶的輸入。

自動完成將檢索

  chaten
  chaitanya
  charles

我建議您使用jQuery ,這將有助於在您輸入字段時提供建議。 這是演示

數據源將是服務器端腳本,該腳本返回JSON數據,並通過簡單的URL為source-option指定。 另外,將minLength-option設置為2以避免查詢返回太多結果,而select-event用於顯示一些反饋。

您可以使用SELECT * FROM TABLE_NAME WHERE NAME LIKE %manu%並在表上顯示(如果要使用類似搜索的選項)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM