Tìm kiếm từ đồng âm trong tệp bằng GroupDocs

Từ đồng nghĩa là những từ có nghĩa tương tự nhau và Từ đồng âm phát âm giống nhau nhưng khác nhau về nghĩa hoặc cách viết. Chúng tôi đã học cách tìm từ đồng nghĩa trong nhiều tài liệu bằng Java. Hôm nay, trong bài viết này, chúng ta sẽ xem cách tìm kiếm từ đồng âm trong nhiều tài liệu bằng Java.

Các chủ đề sau đây sẽ được đề cập dưới đây:

API Java để tìm kiếm từ đồng âm

GroupDocs.Search giới thiệu API Java GroupDocs.Search for Java cho phép tìm bất kỳ từ nào và các từ đồng âm của từ đó trong nhiều tệp của bất kỳ thư mục cụ thể nào. Nó có thể tìm kiếm nội dung của nhiều định dạng khác nhau. Ngoài việc tìm từ đồng âm, API còn hỗ trợ nhiều kỹ thuật tìm kiếm khác bao gồm:

  • Tìm kiếm phân biệt chữ hoa chữ thường
  • Tìm kiếm mờ
  • Tìm kiếm cụm từ
  • Tìm kiếm biểu thức chính quy
  • Tìm kiếm từ đồng nghĩa
  • Tìm kiếm thẻ hoang dã

Bạn có thể tải xuống tệp JAR từ phần tải xuống hoặc sử dụng cấu hình phụ thuộc và kho lưu trữ mới nhất Maven trong các ứng dụng Java của mình.

<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

Tìm từ đồng âm trong nhiều tệp trong Java

Các bước sau đây hướng dẫn cách tìm kiếm từ đồng âm trong nhiều tệp của một thư mục trong Java.

  • Xác định truy vấn từ tìm kiếm, thư mục lập chỉ mục và thư mục chứa các tệp của bạn.
  • Tạo Chỉ mục với thư mục chỉ mục đã xác định.
  • Thêm thư mục của tài liệu vào chỉ mục.
  • Xác định SearchOptions và bật homophoneSearch bằng phương thức setUseHomophoneSearch.
  • Thực hiện tìm kiếm từ đồng âm bằng phương pháp tìm kiếm.
  • Sử dụng các thuộc tính của SearchResult đã truy xuất nếu cần.

Mã nguồn Java sau tìm thấy tất cả các từ đồng âm trong các tệp của thư mục đã xác định. Hơn nữa, bạn cũng có thể quản lý từ điển đồng âm của mình.

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

// 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.setUseHomophoneSearch(true); // Enable Homophone Search

// Tìm kiếm từ 'đúng'
// Ngoài từ 'right', các từ đồng âm 'rite, write, wright, ...' 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 & Homophone Occurrences: " + result.getOccurrenceCount());

Đầu ra của đoạn mã trên như sau:

Query: right
Documents: 2
Occurrences: 17

Bạn có thể sử dụng kết quả tìm kiếm từ đồng âm bằng cách làm theo các bước sau khi nhận được từ đồng âm và các lần xuất hiện của chúng từ mỗi tài liệu.

  • Duyệt các kết quả tìm kiếm.
  • Nhận từng FoundDocument bằng phương thức getFoundDocument.
  • Sử dụng các thuộc tính của từng FoundDocument theo yêu cầu.
  • Bây giờ, duyệt qua các trường của FoundDocument bằng cách lấy FoundDocumentField.
  • Sau đó, từ mỗi FoundDocumentField, nhận tất cả các thuật ngữ và lần xuất hiện của chúng trong mỗi tài liệu.

Ví dụ mã Java sau in kết quả tìm kiếm từ đồng âm cùng với số lần xuất hiện của từng cụm từ được tìm kiếm.

// In kết quả Tìm kiếm từ đồng âm trong Java
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());

// Tra cứu tài liệu
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());
  
  // Duyệt qua các trường tìm thấy
  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 ví dụ mã trên.

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

Tìm kiếm từ đồng âm và in kết quả bằng Java - Complete Code

Mã Java sau kết hợp các bước trên. Ban đầu, nó tìm các từ đồng âm theo truy vấn, sau đó in tất cả các lần xuất hiện của các từ đồng âm từ mỗi tài liệu trong thư mục được cung cấp.

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

// 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.setUseHomophoneSearch(true); // Enable Homophone Search

// Tìm kiếm từ 'đúng'
// Ngoài từ 'right', các từ đồng âm 'rite, write, wright, ...' 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 & 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());
  
        // 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]);
            }
        }
    }
}

Phần kết luận

Để kết luận, bạn đã học cách tìm các từ và từ đồng âm của chúng từ nhiều tài liệu trong một thư mục được chỉ định bằng Java. Bạn có thể thử phát triển ứng dụng Java của riêng mình để tìm kiếm từ đồng âm bằng cách sử dụng GroupDocs.Search for Java.

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 của nó, bạn có thể xem các ví dụ có sẵn trên kho lưu trữ GitHub. Hãy liên hệ với chúng tôi nếu có bất kỳ thắc mắc nào thông qua diễn đàn.

Xem thêm