2012-01-06 53 views
1

自動提示/完整字段在整個網絡中使用。谷歌似乎掌握了它,因爲只要在搜索查詢中輸入一個,建議就會立即返回。B樹適用於自動建議/自動完成網頁表單嗎?

我假設實現此目標的框架涉及Web層上的快速內存數據存儲。我們正在構建基於零售產品的Grails應用程序,因此用戶可能會搜索Can,它應該建議諸如Canon,Cancun等的內容,並且想知道在內存中緩存的Java B-tree是否足以將快速自動完成返回爲JSON通過AJAX。在jQuery AutoComplete字段之外,是否存在任何框架和/或庫以促進此解決方案的開發?

回答

3

自動完成功能是一個文本匹配,信息檢索問題。實現自己的B-tree並編寫自己的邏輯來匹配單詞與其他單詞是你可以做的事情。但那麼你將不得不實施Porter StemmingVector Space Model,和String-edit distance calculation

...或者你可以使用Lucene及其衍生物,它已經做了很多這些東西。如果你真的關心用於存儲這些東西的數據結構,那麼你可以深入其中。但是我非常懷疑自己寫作,並且自己做這些事情從長遠來看會更加可維護和高效。

其中最受歡迎的Grails生態系統插件是Searchable,在Ledbrook & Smith's Grails in Action中提到過。它在封面下使用Lucene,並且可以很容易地將全文搜索添加到您的域類。 (例如,查看GinA中的第8章或可搜索的文檔)。

+0

這是一個很好的信息...你爲我節省了很多必要的工作,謝謝 – raffian 2012-01-09 18:34:20

1

Grails Richui插件具有我過去使用的自動完成功能。我們把它連接到了每次擊鍵時觸擊數據庫(我不建議這樣做,但我們的數據經常變化,以至於需要實時數據)。如果你的清單非常靜態,那麼它可能適合你。

http://grails.org/plugin/richui#AutoComplete

+0

RichUI僅用於用戶界面,我假定後端源仍留給實現者,對嗎? – raffian 2012-01-06 15:56:33

+0

這是正確的,鏈接給出了一個很好的例子。在gsp中,你告訴它當按下一個鍵時要調用哪個控制器/動作,然後實現該控制器/動作來返回xml。 – 2012-01-06 16:01:08