我正在尋找一些高層次的想法/想法幫助我構建字典的數據結構。我有一個傳統的'產品(醫學)搜索系統',它本質上非常緩慢和複雜。我們需要完全重新構建系統以實現高效和可維護的解決方案。字典的建築數據結構
爲了簡化問題,我採取「詞典」(我希望我的新系統的行爲像字典)
- 我應該能夠存儲字,描述和幾個同義詞(相當於仿製藥)的例子,
- 單詞不應該重複
- 同義詞也將是Word的實例(它應該帶有單詞,描述和同義詞的行爲)。
- 搜索速度更快
UseCases
- 當一個字進行搜索,它的含義和同義詞顯示
- 更快的搜索
- 去除代名詞應該是可能的
- 添加新詞,應該可以添加到任何現有的單詞的同義詞
我創建了下面
Class Word {
String meaning;
List<Word> synonyms;
}
要存儲單詞所示的數據結構,我想用TreeSet
因爲
TreeSet的規定,使用 Set接口的實現存儲的樹。對象按照升序順序存儲。 訪問和檢索時間非常快,這使得TreeSet成爲 極好的選擇,因爲在存儲大量必須快速找到 的分類信息時。
或者我可以使用HashMap
,其中單詞和同義詞單詞實例的哈希碼相等,這可以實現更快的檢索。
我仍然能看到很多的挑戰
當過新詞被添加如何與它的同義詞鏈接時,有字的數量龐大
[查詢將是緩慢
編輯詞也應反映同義詞,反之亦然
任何想法/輸入/技巧將予以高度重視
我在現實世界中建立了這樣一個系統。單詞*不是*獨特的。相同的拼寫可以有多種形式(動詞,名詞,形容詞等)或相同的形式(名詞),但可以有多個獨立的含義,其中每個含義都有自己的一組同義詞。單詞可以有替代拼寫。在實踐中,你需要多個層次:一個用於純拼寫,一個用於單詞類型,一個用於特定的詞義。在最底層,您可以添加一些關注點(例如,鏈接到同義詞)。 – beerbajay
你想如何搜索一個詞?如果你不關心排序,爲什麼使用'TreeSet'而不是'HashSet'?爲什麼同義詞也需要成爲一個「單詞」,根據定義,他們與父母「詞」共享他們的「意義」? –
用例更新了問題,TreeSet應該比HashSet更快地檢索。 –