我正在寻找一些高层次的想法/想法帮助我构建字典的数据结构。我有一个传统的'产品(医学)搜索系统',它本质上非常缓慢和复杂。我们需要完全重新构建系统以实现高效和可维护的解决方案。字典的建筑数据结构
为了简化问题,我采取“词典”(我希望我的新系统的行为像字典)
- 我应该能够存储字,描述和几个同义词(相当于仿制药)的例子,
- 单词不应该重复
- 同义词也将是Word的实例(它应该带有单词,描述和同义词的行为)。
- 搜索速度更快
UseCases
- 当一个字进行搜索,它的含义和同义词显示
- 更快的搜索
- 去除代名词应该是可能的
- 添加新词,应该可以添加到任何现有的单词的同义词
我创建了下面
Class Word {
String meaning;
List<Word> synonyms;
}
要存储单词所示的数据结构,我想用TreeSet
因为
TreeSet的规定,使用 Set接口的实现存储的树。对象按照升序顺序存储。 访问和检索时间非常快,这使得TreeSet成为 极好的选择,因为在存储大量必须快速找到 的分类信息时。
或者我可以使用HashMap
,其中单词和同义词单词实例的哈希码相等,这可以实现更快的检索。
我仍然能看到很多的挑战
当过新词被添加如何与它的同义词链接时,有字的数量庞大
[查询将是缓慢
编辑词也应反映同义词,反之亦然
任何想法/输入/技巧将予以高度重视
我在现实世界中建立了这样一个系统。单词*不是*独特的。相同的拼写可以有多种形式(动词,名词,形容词等)或相同的形式(名词),但可以有多个独立的含义,其中每个含义都有自己的一组同义词。单词可以有替代拼写。在实践中,你需要多个层次:一个用于纯拼写,一个用于单词类型,一个用于特定的词义。在最底层,您可以添加一些关注点(例如,链接到同义词)。 – beerbajay
你想如何搜索一个词?如果你不关心排序,为什么使用'TreeSet'而不是'HashSet'?为什么同义词也需要成为一个“单词”,根据定义,他们与父母“词”共享他们的“意义”? –
用例更新了问题,TreeSet应该比HashSet更快地检索。 –