Gần đây chúng tôi đã thảo luận, làm thế nào để có được tất cả các từ đồng nghĩa của bất kỳ từ nào. Sẽ thật tuyệt nếu chúng ta có thể định vị những từ đồng nghĩa này trong nhiều tài liệu khác nhau. Trong bài viết này, chúng ta sẽ xem cách tìm kiếm bất kỳ từ nào và các từ đồng nghĩa của nó trong nhiều tệp bằng Java.

Sau đây là các chủ đề được đề cập dưới đây:

API Java - Tìm kiếm từ đồng nghĩa trong nhiều tệp

GroupDocs.Search giới thiệu API Java GroupDocs.Search for Java. Nó cho phép tìm kiếm các từ và từ đồng nghĩa của chúng trong nhiều tệp khác nhau của thư mục đã chỉ định. Nó hỗ trợ một danh sách dài các định dạng tệp khác nhau và các kỹ thuật tìm kiếm khác nhau. Một số tính năng này được đề cập bên dưới và bạn có thể sử dụng chúng kết hợp để đạt được mục tiêu của mình:

  • Tìm kiếm boolean
  • Tìm kiếm phân biệt chữ hoa chữ thường
  • Đánh dấu kết quả tìm kiếm
  • Tìm kiếm từ đồng âm
  • Tìm kiếm cụm từ
  • Tìm kiếm biểu thức chính quy
  • Tìm kiếm theo khối
  • Tìm kiếm từ đồng nghĩa

Tải xuống hoặc định cấu hình

Bạn có thể tải xuống tệp JAR từ phần tải xuống hoặc chỉ nhận cấu hình phụ thuộc và kho lưu trữ mới nhất cho pom.xml của các ứng dụng Java dựa trên maven của bạn.

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

Tìm từ đồng nghĩa trong nhiều tệp bằng Java

Hãy nhanh chóng chuyển sang tìm kiếm từ đồng nghĩa trong các tệp. Các bước sau đây cho biết cách tìm kiếm các từ đồng nghĩa (các từ có nghĩa tương tự) trong các tệp trong một thư mục bằng Java:

  • Xác định thư mục chỉ mục, thư mục tài liệu và truy vấn (từ để tìm kiếm).
  • Tạo một chỉ mục bằng cách sử dụng thư mục chỉ mục được xác định bằng lớp Chỉ mục.
  • Thêm thư mục tài liệu vào chỉ mục.
  • Bật Tìm kiếm từ đồng nghĩa bằng SearchOptions.
  • Gọi phương thức search của lớp Index và chuyển truy vấn với các tùy chọn tìm kiếm.
  • In bản tóm tắt bằng các thuộc tính của lớp SearchResult đã truy xuất.

Mã nguồn sau đây cho biết cách tìm tất cả các từ đồng nghĩa trong các tệp bằng Java:

// Tìm kiếm từ đồng nghĩa trong nhiều tệp và thư mục bằng Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// Tạo một chỉ mục trong thư mục được chỉ định
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Tạo một đối tượng tùy chọn tìm kiếm
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// Tìm kiếm từ 'make'
// Ngoài từ 'make', các từ đồng nghĩa 'do, get, have,...' cũng sẽ được tìm kiếm
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());

Sau đây là đầu ra của đoạn mã trên:

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

Từ kết quả tìm kiếm thu được ở bước trên, bạn có thể nhận được thông tin liên quan đến từng từ và từ đồng nghĩa của tìm kiếm. Các bước sau đây trình bày chi tiết kết quả sau khi nhận được tất cả các từ đồng nghĩa và số lần xuất hiện của chúng trong mỗi tài liệu:

  • Đầu tiên, thực hiện tìm kiếm để lấy SearchResult.
  • Đảo ngược kết quả tìm kiếm để làm việc với từng FoundDocument.
  • In các thuộc tính lặp lại của từng FoundDocument.
  • Bây giờ, giải nén và sau đó duyệt qua FoundDocumentField trong mỗi FoundDocument.
  • Mỗi FoundDocumentField có các thuật ngữ, lần xuất hiện và các thuộc tính khác trong đó. Sử dụng getter tương ứng.

Mã nguồn sau đây hiển thị kết quả tìm kiếm từ đồng nghĩa cùng với số lần xuất hiện của từng thuật ngữ được tìm kiếm trong Java.

// In kết quả Tìm kiếm từ đồng nghĩa trong 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());
  
        // In các thuật ngữ được tìm thấy
        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]);
            }
        }
    }
}

Sau đây là đầu ra của đoạn mã trên:

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 

Tìm kiếm từ đồng nghĩa và in kết quả trong Java – Mã hoàn chỉnh

Hãy kết hợp hai bước trên, vì vậy đây là mã nguồn hoàn chỉnh. Thứ nhất, nó tìm tất cả các từ đồng nghĩa theo truy vấn được cung cấp. Sau đó, nó in tất cả các lần xuất hiện của mọi từ đồng nghĩa trong mỗi tài liệu trong Java.

// Tìm kiếm từ đồng nghĩa trong nhiều tệp và thư mục bằng Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// Tạo một chỉ mục trong thư mục được chỉ định
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Tạo một đối tượng tùy chọn tìm kiếm
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// Tìm kiếm từ 'make'
// Ngoài từ 'make', các từ đồng nghĩa 'do, get, have,...' cũng sẽ được tìm kiếm
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());
  
        // In các thuật ngữ được tìm thấy
        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]);
            }
        }
    }
}

Nhận giấy phép API miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để sử dụng API mà không bị giới hạn đánh giá.

Sự kết luận

Tóm lại, chúng ta đã thảo luận cách tìm kiếm bất kỳ từ nào cùng với từ đồng nghĩa của nó trong nhiều tài liệu bằng Java. Quan trọng nhất, bây giờ bạn có thể thử phát triển Ứng dụng Java của riêng mình để tìm kiếm giống như GroupDocs.Search App.

Tìm hiểu thêm về API tự động hóa tìm kiếm Java từ tài liệu. Để trải nghiệm các tính năng, hãy thử các ví dụ từ kho lưu trữ GitHub. Vui lòng liên hệ với chúng tôi nếu có bất kỳ câu hỏi nào thông qua diễn đàn.

Xem thêm