public override IList <LookupResult> DoLookup(string key, IEnumerable <BytesRef> contexts, bool onlyMorePopular, int num) { if (contexts != null) { throw new ArgumentException("this suggester doesn't support contexts"); } List <LookupResult> res = new List <LookupResult>(); IList <string> list; int count = onlyMorePopular ? num * 2 : num; if (usePrefix) { list = trie.MatchPrefix(key, count); } else { list = trie.MatchAlmost(key, count); } if (list == null || list.Count == 0) { return(res); } int maxCnt = Math.Min(num, list.Count); if (onlyMorePopular) { LookupPriorityQueue queue = new LookupPriorityQueue(num); foreach (string s in list) { long freq = (long)(trie.Get(s)); queue.InsertWithOverflow(new LookupResult(s, freq)); } foreach (LookupResult lr in queue.GetResults()) { res.Add(lr); } } else { for (int i = 0; i < maxCnt; i++) { string s = list[i]; long freq = (long)(trie.Get(s)); res.Add(new LookupResult(s, freq)); } } return(res); }
public override IList <LookupResult> DoLookup(string key, IEnumerable <BytesRef> contexts, bool onlyMorePopular, int num) { if (contexts != null) { throw new System.ArgumentException("this suggester doesn't support contexts"); } IList <TernaryTreeNode> list = autocomplete.PrefixCompletion(root, key, 0); List <LookupResult> res = new List <LookupResult>(); if (list == null || list.Count == 0) { return(res); } int maxCnt = Math.Min(num, list.Count); if (onlyMorePopular) { LookupPriorityQueue queue = new LookupPriorityQueue(num); foreach (TernaryTreeNode ttn in list) { queue.InsertWithOverflow(new LookupResult(ttn.token, (long)ttn.val)); } foreach (LookupResult lr in queue.GetResults()) { res.Add(lr); } } else { for (int i = 0; i < maxCnt; i++) { TernaryTreeNode ttn = list[i]; res.Add(new LookupResult(ttn.token, (long)ttn.val)); } } return(res); }
public override List<LookupResult> DoLookup(string key, IEnumerable<BytesRef> contexts, bool onlyMorePopular, int num) { if (contexts != null) { throw new System.ArgumentException("this suggester doesn't support contexts"); } IList<TernaryTreeNode> list = autocomplete.PrefixCompletion(root, key, 0); List<LookupResult> res = new List<LookupResult>(); if (list == null || list.Count == 0) { return res; } int maxCnt = Math.Min(num, list.Count); if (onlyMorePopular) { LookupPriorityQueue queue = new LookupPriorityQueue(num); foreach (TernaryTreeNode ttn in list) { queue.InsertWithOverflow(new LookupResult(ttn.token, (long)ttn.val)); } foreach (LookupResult lr in queue.Results) { res.Add(lr); } } else { for (int i = 0; i < maxCnt; i++) { TernaryTreeNode ttn = list[i]; res.Add(new LookupResult(ttn.token, (long)ttn.val)); } } return res; }
public override List<LookupResult> DoLookup(string key, IEnumerable<BytesRef> contexts, bool onlyMorePopular, int num) { if (contexts != null) { throw new System.ArgumentException("this suggester doesn't support contexts"); } List<LookupResult> res = new List<LookupResult>(); IList<string> list; int count = onlyMorePopular ? num * 2 : num; if (usePrefix) { list = trie.MatchPrefix(key, count); } else { list = trie.MatchAlmost(key, count); } if (list == null || list.Count == 0) { return res; } int maxCnt = Math.Min(num, list.Count); if (onlyMorePopular) { LookupPriorityQueue queue = new LookupPriorityQueue(num); foreach (string s in list) { long freq = (long)(trie.Get(s)); queue.InsertWithOverflow(new LookupResult(s, freq)); } foreach (LookupResult lr in queue.Results) { res.Add(lr); } } else { for (int i = 0; i < maxCnt; i++) { string s = list[i]; long freq = (long)(trie.Get(s)); res.Add(new LookupResult(s, freq)); } } return res; }