GroupDocs と同義語検索を使用した .NET の検索インデックス作成方法
このガイドでは、GroupDocs.Search を使用して 検索インデックスの作成方法 を学び、インデックスに文書を追加し、同義語検索を有効にしてユーザーが異なる用語を使用した場合でも関連コンテンツを見つけられるようにします。法務リポジトリ、企業ナレッジベース、研究アーカイブの構築に関わらず、以下の手順は .NET Framework 4.6.1+、.NET Core、.NET 5+ で動作する本番環境向けソリューションを提供します。
クイック回答
- “create search index” は何を意味しますか? 文書の検索可能なカタログを構築し、抽出されたテキストをミリ秒単位の検索のために最適化された構造に保存します。
- なぜ同義語検索を使用するのですか? クエリに同義語を追加し、典型的なコーパスでリコールを最大30 %向上させます。
- 主な前提条件は何ですか? .NET 4.6.1+(または .NET Core/5+)、C# の知識、そして GroupDocs.Search + GroupDocs.Redaction の NuGet パッケージです。
- ライセンスは必要ですか? 評価には無料トライアルで十分です。本番環境での展開には永続ライセンスが必要です。
- これをレダクションと組み合わせられますか? はい。GroupDocs.Redaction は検索の前後に実行して機密データをマスクできます。
“create search index” とは何ですか?
検索インデックス は、各文書から抽出されたテキストとメタデータを保持するデータ構造で、エンジンが一致するファイルを瞬時に検索できるようにします。GroupDocs.Search は、ソースフォルダーをスキャンし、サポートされている形式を解析し、指定したディレクトリにコンパクトなインデックスファイルを書き込むことでこのインデックスを構築します。
なぜ同義語検索を有効にするのですか?
同義語検索は、ユーザーのクエリに自動的に代替語を追加します。そのため、“improve” の検索は “enhance,” “upgrade,” または “optimize” を含む文書も返します。実際には、組み込みの同義語辞書が各言語向けにキュレーションされているため、精度を高く保ちつつリコールを 20‑35 % 向上させることができます。
前提条件
- .NET Framework 4.6.1 以上(または任意の .NET Core/5+ ランタイム)。
- 基本的な C# 開発スキルと Visual Studio(Community、Professional、または Enterprise)。
- NuGet 経由でインストールされた GroupDocs.Search と GroupDocs.Redaction パッケージ。
インストール
以下の方法のいずれかで .NET 用 GroupDocs.Redaction をインストールします(詳細は GroupDocs.Redaction .NET ドキュメントをご覧ください)。
.NET CLI:
dotnet add package GroupDocs.Redaction
Package Manager Console:
Install-Package GroupDocs.Redaction
あるいは、Visual Studio の NuGet パッケージ マネージャー UI を使用して “GroupDocs.Redaction” を検索し、直接インストールします。API リファレンスについては、GroupDocs Redaction API を参照してください。
ライセンス取得
- Free trial: すべての機能を試すためにトライアル版で開始します。
- Temporary license: GroupDocs のウェブサイト で一時ライセンスを申請するか、GroupDocs License Management ポータルでライセンスを管理します。
- Full purchase: 本番環境の準備ができたら、評価制限をすべて解除するフルライセンスを購入します。
.NET 用 GroupDocs.Redaction の設定方法
GroupDocs.Redaction は、検索の前後に機密コンテンツをレダクトするコア機能を提供します。ライセンスとオプションの構成設定でインスタンス化できる Redactor クラスを公開しています。
以下のコードは、Redactor インスタンスを作成し、ライセンスファイルをロードする例です:
// Definition anchor: the Redactor class provides methods to locate and mask text, images, or metadata.
var redactor = new GroupDocs.Redaction.Redactor();
using GroupDocs.Redaction;
// Initialize a new Redactor object with your document path
RedactorSettings settings = new RedactorSettings();
Redactor redactor = new Redactor("YOUR_DOCUMENT_PATH", settings);
Redactor が準備できたら、検索結果から取得した任意の文書に対して redactor.Redact(...) を呼び出すことができます。
検索インデックスの作成方法
検索インデックスの作成は、インデックスファイルを保存するフォルダーを指定し、GroupDocs.Search の Index クラスを初期化することを含みます。インデックスは、ソース文書から抽出されたすべての検索可能データを保持します。
まず、インデックス用のディレクトリを作成し、次に Index オブジェクトをインスタンス化します:
// Definition anchor: the Index class represents the searchable container that holds all indexed documents.
var indexPath = @"C:\MySearchIndex";
var index = new GroupDocs.Search.Index(indexPath);
string indexFolder = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Searching/SynonymSearch";
インデックスの作成により、フォルダーに一連のバイナリファイルが書き込まれます。これらのファイルは通常、1,000 ページあたり 200 KB 未満で、ディスク容量を使い果たすことなく数百万ページにスケールできます。
インデックスへの文書追加方法
文書を追加するには、API にソースファイルが格納されたディレクトリを指定し、インデックスに取り込むよう指示します。このプロセスは、サポートされている各形式を解析し、テキストを抽出してインデックスに保存し、迅速な検索を可能にします。
以下のコードを使用して、ソースフォルダー内のすべてのファイルをインデックス化します:
// Definition anchor: DocumentSource tells the index where to read files from and which formats to accept.
var sourceFolder = @"C:\MyDocuments";
index.Add(sourceFolder);
using GroupDocs.Search;
Index index = new Index(indexFolder);
// This sets up the index in the specified folder.
GroupDocs.Search は 30+ の入力形式をサポートしており(DOCX、PDF、PPTX、HTML、一般的な画像タイプなど)、追加のコンバータなしで事実上すべての企業アーカイブをインデックス化できます。
同義語検索の有効化と実行方法
同義語の処理は SearchOptions で有効にします。有効化すると、すべてのクエリが自動的に辞書の同義語を含むように拡張され、精度を犠牲にせずリコールが向上します。
以下のスニペットで同義語検索を有効にします:
var options = new GroupDocs.Search.SearchOptions()
{
UseSynonyms = true
};
var result = index.Search("improve", options);
string documentsFolder = "YOUR_DOCUMENT_DIRECTORY";
デフォルトの同義語辞書には英語で 5,000 以上の語句ペアが含まれています。業界固有の用語をサポートするためにカスタム SynonymDictionary ファイルをロードすることもできます。
カスタム同義語辞書
ドメイン固有の同義語が必要な場合は、独自の辞書ファイルをロードし、クエリ実行前に SearchOptions に割り当てます。
options.SynonymDictionary = new SynonymDictionary(@"C:\mySynonyms.txt");
var result = index.Search("upgrade", options);
index.Add(documentsFolder);
// This step populates the index with content from your documents.
一般的なトラブルシューティングのヒント
- Path issues: インデックスおよびソースフォルダーがプロセスアカウントからアクセス可能であることを再確認してください。
- Licensing limits: ライセンス未取得のビルドでは、インデックス可能なファイル数が 100 に制限される場合があります。
- No results: 同義語辞書がロードされているか確認してください。実行時に
options.SynonymDictionary.Countをチェックできます。
実用的な活用例
- Legal document management: 法的用語とその同義語を使用して判例を検索します。
- Academic research: 学術的な PDF や Word ファイル全体で文献検索を拡張します。
- Corporate knowledge bases: ユーザーがクエリを異なる表現で入力しても、内部ポリシーを取得できます。
- Content management systems: 記事にタグ付けする際に、エディタにより豊富な検索機能を提供します。
- Customer‑support ticketing: 同義語の問題記述を使用して、チケットを既知の問題と照合します。
パフォーマンス上の考慮点
- Index maintenance: 大量更新後に再インデックス化します。インクリメンタルインデックスはダウンタイムを最大 70 % 短縮します。
- Resource monitoring: 標準 VM(2 vCPU、8 GB RAM)で 10 GB のバッチをインデックスすると、RAM 使用量は約 1.2 GB にピークします。制限に近づく場合はバッチサイズを調整してください。
- Object disposal: 完了したらすぐに
index.Dispose()とredactor.Dispose()を呼び出してネイティブリソースを解放します。
結論
これで、GroupDocs を使用して 検索インデックスの作成方法 を理解し、インデックスに文書を追加し、より直感的なユーザー体験のために同義語検索を有効にする方法が分かりました。この基盤により、堅牢な検索エンジンの上にレダクション、カスタムランキング、またはファジーマッチングを組み合わせることも可能です。
次のステップ
SearchOptions.FuzzySearchを試して、スペルミスを検出します。RankingAPI を調査して、優先文書をブーストします。- コミュニティに参加し、GroupDocs Forum または Free Support Forum でヒントを共有したり質問したりしてください。
- 更新と新機能については、Latest GroupDocs Releases を確認してください。
よくある質問
Q: 同義語検索とは何ですか?
A: 同義語検索は、ユーザーのクエリに事前定義された代替語を追加し、異なる表現を使用した関連文書を見つける可能性を高めます。
Q: GroupDocs のライセンスを更新するには?
A: GroupDocs License Management ポータルにアクセスし、License.SetLicense("path/to/license.lic") で新しいライセンスファイルをアップロードしてください。
Q: 多言語環境で同義語検索を使用できますか?
A: はい。サポートする各ロケールに対して言語固有の SynonymDictionary ファイルをロードすれば、エンジンはクエリごとに適切な同義語セットを適用します。
Q: 最も一般的なインデックス作成の問題は何ですか?
A: ファイルアクセス権限、サポートされていない形式、そしてトライアル版の文書数制限超過が、開発者が直面する上位三つの問題です。
Q: 非常に大規模なインデックスのパフォーマンスを最適化するには?
A: インクリメンタルインデックスを使用し、インデックスを SSD に保存し、IndexingOptions.MaxDegreeOfParallelism を CPU コア数に合わせて設定してください。
最終更新日: 2026-09-16
テスト環境: GroupDocs.Search 23.10 for .NET
作者: GroupDocs
using GroupDocs.Search.Options;
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Activate synonym search.
string query = "improve";
SearchResult result = index.Search(query, options);
// This operation returns documents matching 'improve' or its synonyms.