public void SaveAndLoadIndexData() { var expect = new Dictionary <string, List <int> > { { "0", new List <int> { 1, 2, 4 } }, { "東京", new List <int> { 2, 5, 9 } }, { "大阪", new List <int> { 4, 8 } } }; string saveFilePath = Path.Combine(TestSetup.RootDirectory, "TestResult", "Utilties", "IndexUtility", "SaveIndexData", "test.idx"); var encoding = Encoding.GetEncoding("Shift-JIS"); IndexUtility.SaveIndexData(saveFilePath, expect, encoding); var actual = IndexUtility.LoadIndexData(saveFilePath, encoding); CollectionAssert.AreEquivalent(expect, actual); }
/// <summary> /// レコードを検索します。 /// </summary> /// <param name="keyword">検索キーワード</param> public IEnumerable <string> SearchRecord(string keyword) { string filePath = FileUtility.GetIndexFilePath(_storageDirectoryPath); if (String.IsNullOrEmpty(filePath)) { Console.WriteLine("インデックスがありません。先にインデックスを作成してください。"); yield break; } var keywordSplit = IndexUtility.SplitKeyword(keyword, Ngram).ToList(); var indices = IndexUtility.LoadIndexData(filePath, FileEncoding, keywordSplit); var result = IndexUtility.SearchKeywordLines(keywordSplit.FirstOrDefault(), indices); foreach (var item in keywordSplit.Skip(1)) { var next = IndexUtility.SearchKeywordLines(item, indices).ToList(); result = result.Intersect(next); } var resultList = result.ToList(); string csvFilePath = FileUtility.GetCsvFilePath(_storageDirectoryPath); foreach (var text in FileUtility.GetFileLines(resultList, csvFilePath, FileEncoding)) { yield return(text); } }
public void LoadIndexDataArgumentKeywords() { var indices = new Dictionary <string, List <int> > { { "0", new List <int> { 1, 2, 4 } }, { "関東", new List <int> { 2, 5, 9 } }, { "大阪", new List <int> { 4, 8 } }, { "京都", new List <int> { 5, 9 } } }; var expect = new Dictionary <string, List <int> >(); var keywords = new List <string> { "東", "京" }; foreach (var index in indices) { if (keywords.Any(keyword => index.Key.Contains(keyword))) { expect.Add(index.Key, index.Value); } } Assert.IsTrue(Directory.Exists(Path.Combine(TestSetup.RootDirectory, "TestResult", "Utilties"))); string saveFilePath = Path.Combine(TestSetup.RootDirectory, "TestResult", "Utilties", "IndexUtility", "SaveIndexData", "test.idx"); var encoding = Encoding.GetEncoding("Shift-JIS"); IndexUtility.SaveIndexData(saveFilePath, indices, encoding); var actual = IndexUtility.LoadIndexData(saveFilePath, encoding, keywords); CollectionAssert.AreEquivalent(expect, actual); }