GroupDocsを使用してファイル内の同音異義語を検索

同義語は同じような意味を持つ単語であり、同音異義語は同じように聞こえますが、意味やつづりが異なります。 Javaを使用して複数のドキュメントで同義語を検索する ことを学びました。今日、この記事では、Javaを使用して複数のドキュメント内の同音異義語を検索する方法について説明します。

以下のトピックについて以下で説明します。

同音異義語を検索するためのJavaAPI

GroupDocs.Search は、Java API(GroupDocs.Search for Java ) を紹介しています。特定のフォルダの複数のファイル内で単語とその同音異義語を検索します。 さまざまな形式 のコンテンツを検索できます。同音異義語の検索に加えて、APIは次のような他の多くの検索手法をサポートしています。

*大文字と小文字を区別する検索 *あいまい検索 *フレーズ検索 *正規表現検索 *同義語検索 *ワイルドカード検索

** JAR **ファイルはダウンロードセクション からダウンロードするか、最新のリポジトリと依存関係Maven を使用できます。 Javaアプリケーション内のwebapp/#/artifacts/browse/tree/General/repo/com/groupdocs) 構成。

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>21.8</version> 
</dependency>
PM> Install-Package GroupDocs.Search

Javaの複数のファイルで同音異義語を検索

次の手順は、Javaのフォルダの複数のファイルで同音異義語を検索する方法を示しています。

*検索ワードクエリ、インデックスフォルダ、およびファイルのコンテナフォルダを定義します。 *定義されたインデックスフォルダでインデックス を作成します。 *ドキュメントのフォルダをインデックスに追加します。

次のJavaソースコードは、定義されたフォルダのファイル内のすべての同音異義語を検索します。さらに、同音異義語辞書を管理する こともできます。

// Javaを使用して複数のファイルとフォルダで同音異義語を検索する
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "right";

// 指定したフォルダにインデックスを作成する
Index index = new Index(indexFolder);
index.add(documentsFolder);

// 検索オプションオブジェクトの作成
SearchOptions options = new SearchOptions();
options.setUseHomophoneSearch(true); // Enable Homophone Search

// 「右」という単語を検索します
// 「right」という単語に加えて、同音異義語「rite、write、wright、...」も検索されます
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());

上記のコードの出力は次のとおりです。

Query: right
Documents: 2
Occurrences: 17

各ドキュメントから同音異義語とその出現箇所を取得した後の手順に従って、同音異義語の検索結果を使用できます。

*検索結果をトラバースします。

  • getFoundDocument() を使用して、各FoundDocument を取得します/java/com.groupdocs.search.results/SearchResult#getFoundDocument(int) ) メソッド。 *必要に応じて、各FoundDocumentのプロパティを使用します。 *ここで、FoundDocumentField を取得して、FoundDocumentのフィールドをトラバースします。 *後で、各FoundDocumentFieldから、各ドキュメント内のすべての用語とその出現箇所を取得します。

次のJavaコード例は、同音異義語の検索結果と、検索された各用語の出現回数を出力します。

// 同音異義語の検索結果をJavaで印刷する
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());

// ドキュメントをトラバースする
for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrences: " + document.getOccurrenceCount());
  
  // 見つかったフィールドをトラバースします
  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // 見つかった用語を印刷する
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

以下は、上記のコード例の出力です。

Query: right
Documents: 2
Total occurrences: 17

Document: C:/documents/sample.docx
Occurrences: 11
    Field: content
    Occurrences: 11
        right             3
        rite               4
        wright           1
        write             3
Document: C:/documents/sample.txt
Occurrences: 6
    Field: content
    Occurrences: 6
        right             4
        write             2

Javaを使用して同音異義語を検索して結果を印刷する-完全なコード

次のJavaコードは、上記の手順を組み合わせたものです。最初に、クエリに従って同音異義語を検索し、次に、提供されたフォルダ内の各ドキュメントからの同音異義語のすべての出現を出力します。

// Javaを使用して複数のファイルとフォルダで同音異義語を検索する
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "right";

// 指定したフォルダにインデックスを作成する
Index index = new Index(indexFolder);
index.add(documentsFolder);

// 検索オプションオブジェクトの作成
SearchOptions options = new SearchOptions();
options.setUseHomophoneSearch(true); // Enable Homophone Search

// 「右」という単語を検索します
// 「right」という単語に加えて、同音異義語「rite、write、wright、...」も検索されます
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());

for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrences: " + document.getOccurrenceCount());

  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // 見つかった用語を印刷する
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

結論

結論として、Javaを使用して、指定されたフォルダー内の複数のドキュメントから単語とその同音異義語を見つける方法を学びました。 ** GroupDocs.Search for Java **を使用して、同音異義語を検索するための独自のJavaアプリケーションを開発してみることができます。

ドキュメントからJavaSearchAutomation APIについて の詳細をご覧ください。その機能を体験するには、GitHub リポジトリで利用可能な例をご覧ください。 フォーラム からお問い合わせください。

関連項目