/// <summary>類語検索処理</summary> /// <param name="parameter"></param> private void ExecuteSynonymSearch(object parameter) { Logger.Info(CLASS_NAME, "ExecuteSynonymSearch", "start"); if (_model == null) { Logger.Fatal(CLASS_NAME, "ExecuteSynonymSearch", "_model is null!"); return; } // 表示するモノがないか、空テキストなら検索する意味がない if (_model.TextDocument == null || string.IsNullOrEmpty(_model.TextDocument.Text)) { Logger.Error(CLASS_NAME, "ExecuteSynonymSearch", "target text is null or empty!"); return; } // 検索するべき類語のすべてを配列に変換 DisplaySynonymWord[] synonymWords = new DisplaySynonymWord[DisplaySynonymWords.Count]; DisplaySynonymWords.CopyTo(synonymWords, 0); // 類語検索はmodelに依頼 DisplaySynonymSearchResult[] synonymSearchResults = _model.SynonymSearch(synonymWords, TextDocument.Text); // 現状、特に表示しているモノとの整合性は考えずに更新する // メモリの負荷が大きくなってきたら、別途検討することにする DisplaySynonymSearchResults.Clear(); foreach (DisplaySynonymSearchResult result in synonymSearchResults) { DisplaySynonymSearchResults.Add(result); } // 検索結果にハイライトをかける string[] searchWords = new string[DisplaySynonymWords.Count]; for (int i = 0; i < DisplaySynonymWords.Count; ++i) { searchWords[i] = DisplaySynonymWords[i].SynonymWord; } _model.ApplyHighlightToTargets(searchWords, ApplyHighlightKind.SynonymSearch); }