Создание поискового индекса Java – Развертывание GroupDocs.Search для Java

В современном мире, ориентированном на данные, создание поискового индекса java приложениям необходимо эффективно обрабатывать огромные коллекции документов. Независимо от того, создаёте ли вы корпоративный поисковый сервис или небольшой проект, правильно настроенная поисковая сеть может значительно повысить скорость извлечения и релевантность результатов. В этом руководстве мы пройдём весь процесс настройки GroupDocs.Search для Java, от добавления файлов в поиск до добавления каталогов в узел, чтобы вы могли сразу начать индексировать свои документы.

Быстрые ответы

  • Какова основная цель GroupDocs.Search? Он предоставляет масштабируемый, основанный на Java, движок для индексации и поиска документов в распределённой сети.
  • Какую версию следует использовать? Рекомендуется последняя стабильная версия (например, 25.4) для новых проектов.
  • Нужна ли лицензия? Доступна 30‑дневная бесплатная пробная версия; постоянная лицензия требуется для использования в продакшене.
  • Можно ли добавить как файлы, так и целые каталоги? Да – используйте вспомогательные функции addFiles и addDirectories для загрузки контента.
  • Какая версия Java требуется? Java 8 или выше, с Maven для управления зависимостями.

Что такое «create searchable index java»?

Создание поискового индекса в Java означает построение структуры данных, которая сопоставляет термины с документами, содержащими их, обеспечивая быстрые полнотекстовые запросы. GroupDocs.Search берёт на себя тяжёлую работу, позволяя вам сосредоточиться на загрузке документов и настройке поведения поиска.

Почему стоит использовать GroupDocs.Search для Java?

  • Масштабируемая сетевая архитектура – Развёртывание нескольких узлов, распределяющих нагрузку индексации.
  • Поддержка множества форматов документов – PDF, Word, Excel, PowerPoint, изображения и многое другое.
  • Обновления на основе событий – Подписывайтесь на события узла, чтобы поддерживать индекс в актуальном состоянии в реальном времени.
  • Простая интеграция с Maven – Добавьте несколько строк в pom.xml и начните индексацию.

Предварительные требования

  • JDK 8+ установлен на вашей машине разработки.
  • IDE, такая как IntelliJ IDEA или Eclipse.
  • Базовые знания Java и Maven.
  • Доступ к библиотеке GroupDocs.Search для Java (скачать или подключить через Maven).

Настройка GroupDocs.Search для Java

Maven‑зависимость

Добавьте репозиторий и зависимость в ваш pom.xml:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/search/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-search</artifactId>
      <version>25.4</version>
   </dependency>
</dependencies>

Полезный совет: Следите за актуальностью номера версии, проверяя официальную страницу релизов.

Вы также можете скачать JAR‑файл напрямую с официального сайта: GroupDocs.Search для Java релизы.

Приобретение лицензии

  • Бесплатная пробная версия: 30‑дневная оценка.
  • Временная лицензия: Запрос для расширенного тестирования.
  • Покупка: Требуется для развертываний в продакшене.

Базовая инициализация

Создайте объект конфигурации, указывающий папку, где будут храниться файлы индекса, и определяющий базовый порт связи:

import com.groupdocs.search.Configuration;

class InitializeSearch {
    public static void main(String[] args) {
        String basePath = "your/base/path";
        int basePort = 8080;
        
        Configuration config = new ConfiguringSearchNetwork().configure(basePath, basePort);
        // Use this configuration for subsequent operations
    }
}

Как создать searchable index java с помощью GroupDocs.Search?

Ниже мы разбираем основные функции, необходимые для добавления файлов в поиск и добавления каталогов в узел, а также для развертывания масштабируемой сети.

Функция 1 – Конфигурация и настройка сети

Настройка поисковой сети – первый шаг к построению поискового индекса.

import com.groupdocs.search.Configuration;
import com.groupdocs.search.scaling.*;

class ConfiguringSearchNetwork {
    public static Configuration configure(String basePath, int basePort) {
        // Configure the search network with specified base path and port
        return new Configuration(basePath, basePort);
    }
}
  • basePath – Каталог, где будут сохраняться данные индекса.
  • basePort – Начальный порт; каждый узел будет увеличивать значение от этого порта.

Функция 2 – Развёртывание узлов поисковой сети

Развёртывание узлов распределяет нагрузку индексации между несколькими машинами или процессами.

import com.groupdocs.search.scaling.*;

class SearchNetworkDeployment {
    public static SearchNetworkNode[] deploy(String basePath, int basePort, Configuration configuration) {
        // Deploy nodes based on the provided configuration
        return new SearchNetworkNode[]{new SearchNetworkNode()};
    }
}

Каждый SearchNetworkNode запускает собственный сервис индексации, позволяя вам создавать searchable index java, масштабируемый горизонтально.

Функция 3 – Подписка на события узла

Обновления в реальном времени поддерживают синхронизацию индекса с изменениями файловой системы.

import com.groupdocs.search.scaling.*;

class SearchNetworkNodeEvents {
    public static void subscribe(SearchNetworkNode node) {
        // Logic to subscribe to the specified node's events
    }
}

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

Функция 4 – Добавление каталогов в сетевой узел

Используйте эту вспомогательную функцию для добавления каталогов в узел, рекурсивно собирая все поддерживаемые документы.

import java.io.File;
import java.util.ArrayList;

class DirectoryAdder {
    public static void addDirectories(SearchNetworkNode node, String... directoryPaths) {
        ArrayList<String> files = new ArrayList<>();
        for (String directoryPath : directoryPaths) {
            final File folder = new File(directoryPath);
            listFiles(folder, files);
        }
        addFiles(node, files.toArray(new String[0]));
    }

    private static void listFiles(final File folder, ArrayList<String> list) {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFiles(fileEntry, list);
            } else {
                list.add(fileEntry.getPath());
            }
        }
    }
}

Функция 5 – Добавление файлов в сетевой узел

Когда требуется более тонкий контроль, добавляйте файлы в поиск по отдельности:

import com.groupdocs.search.Document;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import org.apache.commons.io.FilenameUtils;
import com.groupdocs.search.Indexer;
import com.groupdocs.search.options.*;

class FileAdder {
    public static void addFiles(SearchNetworkNode node, String... filePaths) {
        try {
            InputStream[] streams = new FileInputStream[filePaths.length];
            Document[] documents = new Document[filePaths.length];
            for (int i = 0; i < filePaths.length; i++) {
                String filePath = filePaths[i];
                InputStream stream = new FileInputStream(filePath);
                streams[i] = stream;
                
                // Create a document from the input stream
                String fileName = FilenameUtils.getName(filePath);
                String extension = "." + FilenameUtils.getExtension(filePath);
                Document document = Document.createFromStream(
                    fileName,
                    new Date(),
                    extension,
                    stream);
                documents[i] = document;
            }

            // Initialize the indexer and configure options
            Indexer indexer = node.getIndexer();
            IndexingOptions options = new IndexingOptions();
            options.setUseRawTextExtraction(false);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Этот метод даёт гибкость индексировать файлы из потоков, облачного хранилища или временных мест.

Распространённые проблемы и решения

ПроблемаПричинаРешение
В результатах поиска нет документовИндекс не зафиксированВызовите node.getIndexer().commit() после добавления файлов.
Ошибка конфликта портаДругой сервис использует basePortВыберите другой basePort или проверьте свободные порты.
Неподдерживаемый формат файлаВ библиотеке отсутствует парсерУбедитесь, что расширение файла поддерживается, либо добавьте собственный извлекатель.

Часто задаваемые вопросы

В: Можно ли использовать GroupDocs.Search в облачном Java‑приложении?
О: Да. Библиотека работает с любой Java‑средой, и вы можете указать basePath на сетевой общий каталог или облачное хранилище, смонтированное локально.

В: Как обновлять индекс при изменении файла?
О: Подпишитесь на события узла (см. Функцию 3) и снова вызовите addFiles или addDirectories для изменённых путей.

В: Есть ли ограничение на количество узлов, которые можно развернуть?
О: Практически ограничение определяется вашим оборудованием и пропускной способностью сети. Сам API жёсткого лимита не накладывает.

В: Нужно ли перезапускать узлы после добавления новых файлов?
О: Нет. Добавление файлов автоматически запускает индексацию; фиксировать изменения необходимо только при отложенной операции.

В: Какие форматы документов поддерживаются «из коробки»?
О: PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, TXT, HTML и многие типы изображений. Смотрите официальную документацию для полного списка.


Последнее обновление: 2025-12-26
Тестировано с: GroupDocs.Search для Java 25.4
Автор: GroupDocs