我想写一种简单的搜索引擎。我有与特定的关键字相关的主要科目的确定数量。这样做的目的是要认识到从输入部分关键词主体。我想使用的:词典<字符串列表<串GT;> 。我会在本词典搜索和查找,例如,所有关键字开始用3个字符字符串和相关联的主体。
I am trying to write a kind of simple search engine. I have a determined number of main subjects that are associated with specific keywords. The aim is to recognize the main subject from an input partial keyword. I am thinking of using a : Dictionary<string, List<string>>. I'll have to search in this dictionary and find, e.g., all keywords beginning with a 3 characters string and their main subject which is associated.
是我的解决方案最好的?而且我怎么能有效地通过这些数据看,无需手动检查每列表,字符串按字符串。
Is my solution the best one ? And how can I efficiently look through those data without having to check manually every List, string by string.
让我知道,如果我'不明确。
Let my know if I'am not clear.
推荐答案您正在寻找特里数据结构,它是这样做的推荐的方式开始与搜索。这里是一个博客帖子谈论它。你可以在这里找到的来源。
You're looking for Trie data structure, it is the recommended way of doing starts with search. Here is a blog post talking about it. You can find the source here.
下面是如何使用上面的实现,从上述文章中的代码。
Here's how use the above implementation, code from the above article.
//Create trie Trie < string > trie = new Trie < string > (); //Add some key-value pairs to the trie trie.Put("James", "112"); trie.Put("Jake", "222"); trie.Put("Fred", "326"); //Search the trie trie.Matcher.NextMatch('J'); //Prefix thus far: "J" trie.Matcher.GetPrefixMatches(); //[112, 222] trie.Matcher.IsExactMatch(); //false trie.Matcher.NextMatch('a'); trie.Matcher.NextMatch('m'); //Prefix thus far: "Jam" trie.Matcher.GetPrefixMatches(); //[112] trie.Matcher.NextMatch('e'); trie.Matcher.NextMatch('s'); //Prefix thus far: "James" trie.Matcher.IsExactMatch(); //true trie.Matcher.GetExactMatch(); //112 //Remove a string-value pair trie.Remove("James");更多推荐
我应该使用哪个数据类型和方法?
发布评论