Повнотекстовий пошук — це спосіб пошуку тексту/запиту в колекції документів. Цей підхід швидко знаходить усі екземпляри терміна/фрази та працює за допомогою текстових індексів. У цій статті ми навчимося програмно здійснювати повнотекстовий пошук у документах за допомогою Java.

Повнотекстовий пошук

Після цього ви зможете застосувати різні методи пошуку та створити своє рішення для пошуку документів текстової обробки, електронних таблиць, презентацій, файлів HTML, файлів PDF, електронних книг, повідомлень електронної пошти, архівів ZIP та багатьох інших форматів документів.

Нижче описано наступні теми:

Java API для повнотекстового пошуку

GroupDocs.Search надає API повнотекстового пошуку Java, який можна інтегрувати в будь-яку програму без сторонніх інструментів і програмного забезпечення. Це дозволяє пошук у великому списку форматів документів. Деякі з методів пошуку, які можна виконати за допомогою API, такі:

  • Пошук з урахуванням регістру
  • Пошук за регулярним виразом
  • Фасетний пошук
  • Нечіткий пошук
  • Омофонний пошук
  • Пошук синонімів

Завантажити або налаштувати

Ви можете завантажити файл JAR із розділу завантажень або просто отримати найновіші конфігурації репозиторію та залежностей для pom.xml ваших програм Java на основі Maven.

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

Існує два кроки для виконання пошуку файлів, що зберігаються в папці.

  • Індексація
  • Виконайте пошук

Індексуйте файли за допомогою Java

Покажчик містить сканований текст усіх документів. Тому, коли ви збираєтеся виконати операцію пошуку, посилайтеся лише на індекс, а не на текст вихідних документів. Щоб зробити можливим миттєвий пошук у тисячах документів з однаковими або різними форматами файлів, вам потрібно створити індекс і додати ці документи до нього. Коли документи проіндексовано, індекс готовий до обробки пошукових запитів.

Наступні прості два рядки створюють індекс, а також додають папку документів до індексу.

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

Після індексації кількох документів однакового або різних форматів, як-от (Word, PDF, Excel і HTML), ми можемо перейти до обробки певного пошукового запиту (пошуковий термін «Намалювати») над ними. Нижче наведено кроки для виконання текстового пошуку в кількох документах у папці за допомогою Java:

  • Вкажіть вихідну папку документів та індексну папку.
  • Створіть Індекс за допомогою папки індексу.
  • Додайте вихідну папку до індексу.
  • Підготуйте рядок запиту.
  • Виконайте пошук за допомогою методу search класу Index.
  • Перегляньте всі результати пошуку, щоб знайти властивості кожного документа.

У наведеному нижче вихідному коді виконується текстовий пошук у Java в усіх документах наданої папки.

// Шукайте вказаний текст у кількох документах PDF, Word, Excel, HTML у папці за допомогою Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath");

// Пошук в індексі для зазначеного тексту
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());
}

Ми отримаємо шлях до документа та кількість входжень пошукових термінів у всіх документах із зазначеною папкою. Ось скріншот для візуалізації.

Виведення тексту повного пошуку

Виділіть текстові результати пошуку в Java

Давайте тепер виконаємо той самий повнотекстовий пошук, а також виділимо всі випадки, які відповідають вашому запиту.

У наступних кроках показано, як виділити результати текстового пошуку:

  • Створіть Індекс і додайте папку документів до покажчика.
  • Підготуйте рядок запиту.
  • Виконайте пошук у папці документів за допомогою методу пошук.
  • Переглядаючи результати, створіть підсвічувач за допомогою HtmlHighlighter.
  • Використовуйте метод виділення, щоб виділити результати пошуку.

Наведений нижче код генерує вихідні дані HTML із виділеними результатами пошуку за допомогою Java.

// Виділіть повнотекстові результати пошуку кількох документів у папці в 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
}

На виході ми отримаємо кілька файлів HTML. У кожному файлі відображатиметься вміст окремого документа (наприклад, excel.xlsx, source.docx, target.docx) із виділеними термінами/словами пошуку. Нижче наведено виділені HTML-виводи файлів DOCX, TXT і PDF, отримані за допомогою наведеного вище коду.

Виділіть повнотекстовий пошук у вмісті за допомогою Java

Отримайте безкоштовну ліцензію API

Ви можете отримати безкоштовну тимчасову ліцензію, щоб використовувати API без оціночних обмежень.

Висновок

У цій статті ми навчилися шукати текст у кількох документах папки на Java. Крім того, ми обговорили, як програмно виділити текст результатів пошуку у форматі HTML для файлів MS Word, файлів TXT і файлів PDF за допомогою GroupDocs.Search for Java.

Ви можете дізнатися більше про API за допомогою документації. Багато інших прикладів доступно на GitHub. Якщо у вас виникли запитання, зв’яжіться з нами через форум.

Дивись також