2011-11-24 79 views
2

通過映射到entityId的字符串(約5000個實體名稱在應用程序中)通過子串實現搜索的最佳方式是什麼?通過substring搜索映射到id的字符串

我想要實現它,這樣我就可以在用戶輸入一個或多個字符時向用戶提供搜索建議。例如,我希望能夠建議所有以他的查詢子字符串開頭的實體,因爲他搜索的是。

期待將它們存儲在應用程序範圍本身中,以避免頻繁從數據庫檢索。

+0

需要更多的上下文信息。換一種說法:你在說什麼? –

+0

實體可以位於字符串中的任何位置嗎?字符串可以多久? –

回答

2

這聽起來像你需要某種trie結構。當用戶鍵入字符時,可以返回已經鍵入的映射節點下的葉子節點的子集。

谷歌有一個trie implementation你可能會適應。

+0

我正在想像這樣的東西..但這不是幸運的生產質量代碼,可以直接使用... –

+0

授予。這裏有另一個實現http://stevedaskam.wordpress.com/2009/05/28/trie-structures/ - 我沒有詳細搜索實現;也許在Apache Commons庫中有一個? – mcfinnigan

+0

http://code.google.com/p/patricia-trie/ –

1

我不確定是否完全理解你需要什麼(對不起),但是我通過使用Apache Lucene搜索/索引/緩存字符串和減少數據庫訪問來取得成功。你可能想看看Apache Lucene's Site

希望它有幫助。