private LazyTrie GetTrie(string field) { LazyTrie trie; if (!_trieFiles.TryGetValue(field, out trie)) { trie = new LazyTrie(Path.Combine(_directory, field.ToTrieContainerId() + ".tc")); _trieFiles[field] = trie; } return(trie); }
public void Lazy() { var dir = Setup.Dir + "\\lazy"; if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } var words = new LazyTrie(Path.Combine(dir, "abc123.tc")); words.Add("treaty"); words.Add("treating"); words.Add("tree"); words.Add("pre"); words.Add("prefix"); Assert.AreEqual(3, words.Prefixed("tre").Count()); Assert.AreEqual(1, words.Prefixed("tree").Count()); Assert.AreEqual(2, words.Prefixed("pre").Count()); Assert.AreEqual(1, words.Prefixed("pref").Count()); Assert.IsTrue(words.Similar("tre", 1).Contains("tree")); Assert.IsFalse(words.Similar("tre", 1).Contains("treat")); Assert.IsFalse(words.Similar("tre", 1).Contains("treaty")); Assert.IsFalse(words.Similar("tre", 1).Contains("treating")); Assert.IsTrue(words.Similar("tre", 1).Contains("pre")); using (var container = new TrieWriter("abc123")) { words.Save(container, dir); } var lz = new LazyTrie(Path.Combine(dir, "abc123.tc")); Assert.AreEqual(3, lz.Prefixed("tre").Count()); Assert.AreEqual(1, lz.Prefixed("tree").Count()); Assert.AreEqual(2, lz.Prefixed("pre").Count()); Assert.AreEqual(1, lz.Prefixed("pref").Count()); Assert.AreEqual(0, lz.Prefixed("cracker").Count()); Assert.IsTrue(lz.Similar("tre", 1).Contains("tree")); Assert.IsFalse(lz.Similar("tre", 1).Contains("treat")); Assert.IsFalse(lz.Similar("tre", 1).Contains("treaty")); Assert.IsFalse(lz.Similar("tre", 1).Contains("treating")); Assert.IsTrue(lz.Similar("tre", 1).Contains("pre")); }