Tìm kiếm toàn văn bản là một cách để tìm kiếm văn bản/truy vấn trong một bộ sưu tập tài liệu. Cách tiếp cận này nhanh chóng tìm thấy tất cả các trường hợp của một thuật ngữ/cụm từ và nó hoạt động bằng cách sử dụng các chỉ mục văn bản. Trong bài viết này, chúng ta sẽ tìm hiểu cách lập trình tìm kiếm toàn văn trong tài liệu bằng Java.

Tìm kiếm toàn văn

Sau này, bạn có thể triển khai các kỹ thuật tìm kiếm khác nhau và xây dựng giải pháp tìm kiếm của mình cho tài liệu soạn thảo văn bản, bảng tính, bản trình bày, tệp HTML, tệp PDF, sách điện tử, thư email, tệp lưu trữ ZIP và nhiều định dạng tài liệu khác.

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

API Java để tìm kiếm toàn văn bản

GroupDocs.Search cung cấp API Java tìm kiếm toàn văn bản có thể được tích hợp vào bất kỳ ứng dụng nào mà không cần bất kỳ sự phụ thuộc vào phần mềm và công cụ bên thứ ba nào. Nó cho phép bạn tìm kiếm trong một danh sách lớn các định dạng tài liệu. Một số kỹ thuật tìm kiếm có thể được thực hiện bằng API như sau:

  • Tìm kiếm phân biệt chữ hoa chữ thường
  • Tìm kiếm biểu thức chính quy
  • Tìm kiếm theo khía cạnh
  • Tìm kiếm mờ
  • Tìm kiếm từ đồng âm
  • 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.3</version> 
</dependency>

Có hai bước để thực hiện tìm kiếm trong các tệp được lưu trữ trong một thư mục.

  • lập chỉ mục
  • Thực hiện tìm kiếm

Lập chỉ mục các tệp bằng Java

Một chỉ mục sở hữu văn bản được quét của tất cả các tài liệu. Do đó, khi bạn thực hiện thao tác tìm kiếm, chỉ có chỉ mục được tham chiếu chứ không phải văn bản của tài liệu gốc. Để có thể tìm kiếm ngay lập tức trên hàng nghìn tài liệu có định dạng tệp giống hoặc khác nhau, bạn cần tạo một chỉ mục và thêm các tài liệu này vào đó. Khi tài liệu được lập chỉ mục, chỉ mục đã sẵn sàng để xử lý các truy vấn tìm kiếm.

Hai dòng đơn giản sau đây tạo một chỉ mục và cũng thêm thư mục tài liệu vào chỉ mục.

Index index = new Index("indexingFolderPath");
index.add("documentsFolderPath");

Sau khi lập chỉ mục nhiều tài liệu có cùng định dạng hoặc định dạng khác nhau như (Word, PDF, Excel và HTML), chúng tôi có thể tiếp tục xử lý một truy vấn tìm kiếm cụ thể (thuật ngữ tìm kiếm “Draw”) đối với chúng. Sau đây là các bước để thực hiện tìm kiếm văn bản trên nhiều tài liệu trong một thư mục bằng Java:

  • Chỉ định thư mục nguồn của tài liệu và thư mục chỉ mục.
  • Tạo Chỉ mục bằng thư mục chỉ mục.
  • Thêm thư mục nguồn vào chỉ mục.
  • Chuẩn bị chuỗi truy vấn.
  • Thực hiện tìm kiếm bằng phương thức search của lớp Index.
  • Duyệt qua từng kết quả tìm kiếm để biết các thuộc tính của từng tài liệu.

Mã nguồn sau đây thực hiện tìm kiếm văn bản trong Java trên tất cả các tài liệu của thư mục được cung cấp.

// Tìm kiếm văn bản được chỉ định trong nhiều tài liệu PDF, Word, Excel, HTML trong một thư mục bằng Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath");

// Tìm kiếm trong chỉ mục cho văn bản được chỉ định
SearchResult result = index.search("Draw");

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

Chúng tôi sẽ nhận được đường dẫn tài liệu và số lần xuất hiện của cụm từ tìm kiếm trong tất cả các tài liệu có thư mục được chỉ định đó. Đây là ảnh chụp màn hình để hình dung.

Đầu ra văn bản tìm kiếm đầy đủ

Làm nổi bật kết quả tìm kiếm văn bản trong Java

Bây giờ chúng ta hãy thực hiện cùng một tìm kiếm toàn văn và đánh dấu tất cả các lần xuất hiện phù hợp với truy vấn của bạn.

Các bước sau đây cho biết cách đánh dấu kết quả tìm kiếm văn bản:

  • Tạo Chỉ mụcvà thêm thư mục tài liệu vào chỉ mục.
  • Chuẩn bị chuỗi truy vấn.
  • Tìm kiếm thư mục tài liệu bằng phương pháp search.
  • Trong khi duyệt qua các kết quả, hãy tạo công cụ đánh dấu bằng HtmlHighlighter.
  • Sử dụng phương pháp đánh dấu để làm nổi bật kết quả tìm kiếm.

Đoạn mã sau tạo đầu ra HTML với các kết quả tìm kiếm được đánh dấu bằng Java.

// Làm nổi bật kết quả tìm kiếm toàn văn của nhiều tài liệu trong một thư mục trong Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath"); // Synchronous indexing documents from the specified folder

String query = "draw"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

for (int i = 0; i < result.getDocumentCount(); i++) 
{
    FoundDocument document = result.getFoundDocument(i);

    String path = "path/Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the highlighter
    index.highlight(document, highlighter); // Generates HTML formatted output document with highlighted search results
}

Là đầu ra, chúng tôi sẽ nhận được nhiều tệp HTML. Mỗi tệp sẽ hiển thị nội dung của một tài liệu riêng biệt (ví dụ: excel.xlsx, source.docx, target.docx) với các cụm từ/từ tìm kiếm được đánh dấu. Đưa ra bên dưới là đầu ra HTML được đánh dấu của tệp DOCX, tệp TXT và tệp PDF thu được bằng mã ở trên.

Làm nổi bật kết quả tìm kiếm toàn văn trong nội dung bằng Java

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

Trong bài viết này, chúng ta đã học cách tìm kiếm văn bản trong nhiều tài liệu của một thư mục trong Java. Hơn nữa, chúng ta đã thảo luận cách lập trình làm nổi bật văn bản của kết quả tìm kiếm ở định dạng HTML cho tệp MS Word, tệp TXT và tệp PDF bằng GroupDocs.Search for Java.

Bạn có thể tìm hiểu thêm về API bằng cách sử dụng tài liệu. Nhiều ví dụ khác có tại GitHub. Nếu có thắc mắc, hãy liên hệ với chúng tôi qua diễn đàn.

Xem thêm