我正在寻找一种保存同义词的数据结构。我想把同义词放在像“北美”,“美国”,“美国”这样的桶中。
搜索内容可以使用“北美”,“美国”,“美国”中的任何一种进行标记。
For example,
Content_1 is tagged "USA"
Content_2 is tagged "North America"
Content_3 is tagged "United States"
如果用户搜索“USA”,搜索结果应该返回所有三个内容而不仅仅是Content_1。要做到这一点,我必须获得美国的所有同义词,然后进行搜索。
如何在我寻找同义词之一的地方存储同义词并获取所有其他同义词?
执行此操作的一种方法是通过HashMap(如下所示)
USA -> North America,United States
United States -> USA, North America
North America -> USA,United States
这个看起来并不那么好。请建议一个良好的数据结构来存储同义词。
感谢。
答案 0 :(得分:1)
访问权限为O(1)。但构建数据结构看起来像生成 重复的项目。一个更好的数据结构,只有一个条目 存储
您可以使用两种数据结构。一个用于存储它们,另一个用于查找。 一个向量向量,包含单词的所有同义词。以及指向容器的散列图,其中包含O(1)查找的所有同义词。
因此,您可以将同义词存储在这样的数据结构中(字符串列表列表):
{{"USA","North America","United States"},{"Tiny","Small"},{"Great","Good"}}
然后你会有一个 hashmap ,所以如果你搜索" USA"你会得到第一个清单。如果您搜索" Small"你会得到第二个清单。
"USA"->{"USA","North America","United States"}
"Small"->{"Small","Tiny"}
hashmap中的数据只是对您在其他数据结构中保存的同义词列表的引用。
答案 1 :(得分:0)
构建数据类型Synonym
,其Set<String>
包含一个单词的所有同义词(在您的情况下&#34;北美&#34;,&#34;美国和#34;,&# 34;美国&#34;)。
然后使用Map<String, Synonym>
将所有字词映射到相应的Synonym
。