最近、任意の単語のすべての同義語を取得する方法について説明しました。これらの同義語を多くの異なるドキュメント内で見つけることができれば素晴らしいと思います。この記事では、Javaを使用して複数のファイルで単語とその同義語を検索する方法について説明します。

以下は、以下でカバーされるトピックです。

JavaAPI-複数のファイルで同義語を検索

GroupDocs.Searchは、Java APIGroupDocs.Search for Java) を紹介します。指定したフォルダーのさまざまな複数のファイルで単語とその同義語を検索できます。さまざまなファイル形式の長いリストをサポートします。さまざまな検索手法。これらの機能の一部を以下に示します。これらの機能を組み合わせて使用すると、目標を達成できます。

  • ブール検索
  • 大文字と小文字を区別する検索
  • 検索結果を強調表示
  • 同音異義語検索
  • フレーズ検索
  • 正規表現検索
  • チャンクで検索
  • 同義語検索

ダウンロードまたは構成

ダウンロードセクションからJARファイルをダウンロードするか、mavenベースのJavaアプリケーションのpom.xmlの最新のリポジトリと依存関係の構成を取得することができます。

<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>

Javaを使用して複数のファイルで同義語を検索する

ファイル内の同義語の検索にすばやく移動しましょう。次の手順は、Javaを使用してフォルダ内のファイル内の同義語(同様の意味を持つ単語) を検索する方法を示しています。

  • インデックスフォルダ、ドキュメントのフォルダ、クエリ(検索する単語) を定義します。
  • Indexクラスを使用して定義されたインデックスフォルダを使用してインデックスを作成します。
  • ドキュメントのフォルダをインデックスに追加します。
  • SearchOptionsを使用して同義語検索を有効にします。
  • Indexクラスのsearchメソッドを呼び出し、検索オプションを使用してクエリを渡します。
  • 取得したSearchResultクラスのプロパティを使用して要約を出力します。

次のソースコードは、Javaを使用してファイル内のすべての同義語を見つける方法を示しています。

// Javaを使用して複数のファイルおよびフォルダー内の同義語を検索する
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

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

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

// 「make」という単語を検索します
// 「make」という単語に加えて、同義語「do、get、have、...」も検索されます
SearchResult result = index.search(query, options);

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

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

Query: **make**
Documents: 3
Word & Synonym Occurrences: 44 

上記のステップで得られた検索結果から、検索の各単語と同義語に関する情報を取得できます。次の手順では、各ドキュメント内のすべての同義語とその出現回数を取得した後、結果を詳細に示します。

  • まず、検索を実行してSearchResultを取得します。
  • FoundDocumentで機能するように、検索結果をトラバースします。
  • 各FoundDocumentのそれぞれのプロパティを出力します。
  • ここで、各FoundDocument内のFoundDocumentFieldを抽出してトラバースします。
  • 各FoundDocumentFieldには、用語、オカレンス、およびその他のプロパティが含まれています。それぞれのゲッターを使用します。

次のソースコードは、類義語検索の結果と、Javaで検索された各用語の出現回数を示しています。

// 同義語検索結果をJavaで印刷する
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym 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: **make**
Documents: 2
Total occurrences: 22

Document: C:/documents/sample.docx
Occurrences: 13
    Field: content
    Occurrences: 13
        **make**  -  2
        **have**  -  1
        **get**  -  2
        **do**  -  8
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.txt
Occurrences: 11
    Field: content
    Occurrences: 11
        **make**  -  1
        **have**  -  2
        **get**  -  1
        **do**  -  7
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.pdf
Occurrences: 20
    Field: content
    Occurrences: 20
        **make**  -  2
        **have**  -  2
        **get**  -  2
        **do**  -  14 

同義語の検索とJavaでの結果の印刷–完全なコード

上記の2つのステップを組み合わせてみましょう。完全なソースコードは次のとおりです。まず、提供されたクエリに従ってすべての同義語を検索します。次に、Javaの各ドキュメントで出現するすべての類義語を出力します。

// Javaを使用して複数のファイルおよびフォルダー内の同義語を検索する
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

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

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

// 「make」という単語を検索します
// 「make」という単語に加えて、同義語「do、get、have、...」も検索されます
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym 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]);
            }
        }
    }
}

無料のAPIライセンスを取得する

評価の制限なしにAPIを使用するために、無料の一時ライセンスを取得することができます。

結論

要約すると、Javaを使用して、複数のドキュメントでその同義語とともに任意の単語を検索する方法について説明しました。最も重要なことは、GroupDocs.SearchAppのように検索用の独自のJavaアプリを開発できるようになったことです。

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

関連項目