通過映射到entityId的字符串(約5000個實體名稱在應用程序中)通過子串實現搜索的最佳方式是什麼?通過substring搜索映射到id的字符串
我想要實現它,這樣我就可以在用戶輸入一個或多個字符時向用戶提供搜索建議。例如,我希望能夠建議所有以他的查詢子字符串開頭的實體,因爲他搜索的是。
期待將它們存儲在應用程序範圍本身中,以避免頻繁從數據庫檢索。
通過映射到entityId的字符串(約5000個實體名稱在應用程序中)通過子串實現搜索的最佳方式是什麼?通過substring搜索映射到id的字符串
我想要實現它,這樣我就可以在用戶輸入一個或多個字符時向用戶提供搜索建議。例如,我希望能夠建議所有以他的查詢子字符串開頭的實體,因爲他搜索的是。
期待將它們存儲在應用程序範圍本身中,以避免頻繁從數據庫檢索。
這聽起來像你需要某種trie結構。當用戶鍵入字符時,可以返回已經鍵入的映射節點下的葉子節點的子集。
谷歌有一個trie implementation你可能會適應。
我正在想像這樣的東西..但這不是幸運的生產質量代碼,可以直接使用... –
授予。這裏有另一個實現http://stevedaskam.wordpress.com/2009/05/28/trie-structures/ - 我沒有詳細搜索實現;也許在Apache Commons庫中有一個? – mcfinnigan
http://code.google.com/p/patricia-trie/ –
我不確定是否完全理解你需要什麼(對不起),但是我通過使用Apache Lucene搜索/索引/緩存字符串和減少數據庫訪問來取得成功。你可能想看看Apache Lucene's Site。
希望它有幫助。
需要更多的上下文信息。換一種說法:你在說什麼? –
實體可以位於字符串中的任何位置嗎?字符串可以多久? –