C# を使用して検索結果を操作する

検索結果を効率的に管理することは、堅牢なドキュメント検索システムの基礎であり、これらの結果を解釈して活用する方法を理解することで、データに基づく意思決定を大幅に強化できます。このガイドでは、C# を使用して検索結果を操作する方法について説明します。インデックス リポジトリの設定からあいまい検索オプションの構成まで、このチュートリアルでは、検索クエリとその結果を処理するための明確で実用的なアプローチを提供します。単一の用語または複雑なフレーズの一致を分析する必要がある場合でも、この方法を使用すると、結果を包括的に処理し、意味のあるパターンを発見することができます。最後には、C# で検索結果を取得する方法と、さまざまなアプリケーションでそれらを活用する方法を自信を持って習得できます。

C# を使用して検索結果を操作する手順

  1. 検索結果を操作するには、プロジェクトに GroupDocs.Search for .NET ライブラリを含めます
  2. Index クラスを使用してインデックス オブジェクトを作成し、インデックスを保存するフォルダー パスを指定します。
  3. Index.Add メソッドを使用して、指定したフォルダからドキュメントをインデックスに追加します。
  4. SearchOptionsのインスタンスを作成し、FuzzySearch.Enabledをtrueに設定してあいまい検索を有効にします。
  5. FuzzyAlgorithmを使用して、許容される差異の最大数(例:3)を定義します。
  6. Index.Search メソッドを使用して、設定された SearchOptions とともに指定された用語またはフレーズを含むドキュメントを検索します。
  7. 見つかった文書の数(DocumentCount)と検索語の総出現回数(OccurrenceCount)を出力します。
  8. GetFoundDocument メソッドを使用して、検索結果のドキュメントをループします。各ドキュメントのファイル パスと出現回数を表示します。
  9. 各ドキュメントについて、FoundFields を反復処理して、フィールド名、出現回数、見つかった用語、見つかったフレーズなどの詳細を表示します。

検索結果を効果的に操作するには、まずドキュメントのインデックス リポジトリを設定する必要があります。提供されているコード スニペットを使用すると、指定されたフォルダーにインデックスが作成され、別のフォルダーのドキュメントがそのインデックスに追加されます。次に、検索オプションがあいまい検索を有効にするように構成され、最大差異しきい値を使用した柔軟な一致が可能になります。この設定により、高度なアルゴリズムを使用して、「アインシュタイン」などの用語や「相対性理論」などのフレーズを検索しやすくなります。検索が実行されると、SearchResult オブジェクトを通じて結果にアクセスします。クエリに一致するドキュメントの総数とその出現回数が表示されます。ファイル パスや用語とフレーズの出現回数など、各ドキュメントの詳細情報を取得します。各ドキュメント内で見つかったフィールドを反復処理することで、一致を含む特定のフィールドを特定し、用語とフレーズをそれぞれの頻度で分析できます。この手順では、C# でインデックス検索結果にアクセスする方法を示し、取得したデータの構造化されたビューを提供します。

C# を使用して検索結果を操作するコード

using GroupDocs.Search;
using GroupDocs.Search.Options;
using GroupDocs.Search.Results;
using System;
namespace WorkwithSearchResultsUsingCSharp
{
internal class Program
{
static void Main(string[] args)
{
// Apply the license to remove the restrictions
// imposed by the Search library
License lic = new License();
lic.SetLicense(@"GroupDocs.Search.lic");
string indexFolder = @"d:\MyIndex\";
string documentsFolder = @"d:\MyDocuments\";
// Creating an index
Index index = new Index(indexFolder);
// Indexing documents from the specified folder
index.Add(documentsFolder);
// Creating search options
SearchOptions options = new SearchOptions();
options.FuzzySearch.Enabled = true; // Enabling the fuzzy search
options.FuzzySearch.FuzzyAlgorithm = new TableDiscreteFunction(3); // Setting the maximum number of differences to 3
// Search for documents containing the word 'Einstein' or the phrase 'Theory of Relativity'
SearchResult result = index.Search("Einstein OR \"Theory of Relativity\"", options);
// Printing the result
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
FoundDocument document = result.GetFoundDocument(i);
Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
for (int j = 0; j < document.FoundFields.Length; j++)
{
FoundDocumentField field = document.FoundFields[j];
Console.WriteLine("\t\tField: " + field.FieldName);
Console.WriteLine("\t\tOccurrences: " + document.OccurrenceCount);
// Printing found terms
if (field.Terms != null)
{
for (int k = 0; k < field.Terms.Length; k++)
{
Console.WriteLine("\t\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
}
}
// Printing found phrases
if (field.TermSequences != null)
{
for (int k = 0; k < field.TermSequences.Length; k++)
{
string sequence = string.Join(" ", field.TermSequences[k]);
Console.WriteLine("\t\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
}
}
}
}
}
}
}

検索結果を効果的に管理し、解釈することは、インデックスされたデータの価値を最大化するために重要です。このプロセスには、ドキュメントの取得だけでなく、用語の出現、フィールド固有の一致、フレーズシーケンスの詳細な調査も含まれます。ここで紹介する方法により、構造化された詳細な方法で結果を分析できるようになり、高度なデータ洞察が得られます。さらに、ライブラリはプラットフォームに依存しないため、さまざまなシステムや環境間でシームレスに統合でき、検索関連のタスクに幅広く使用できます。このアプローチを習得することで、C# で検索結果を効率的に処理し、データ分析からリアルタイムのドキュメント取得まで、幅広いシナリオに適用できます。

以前、C# を使用して検索レポートを作成するための包括的なガイドを共有しました。完全なステップバイステップのチュートリアルについては、C# を使用して検索レポートを作成する の方法に関する詳細な記事を必ずご覧ください。

 日本語