Добавить документы в индекс для поиска без учета регистра в Java

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

Краткие ответы

  • Что означает “add documents to index”? Это загрузка исходных файлов в структуру данных, доступную для поиска, чтобы их можно было запросить позже.
  • Зачем использовать замену символов? Это нормализует каждый символ — обычно до нижнего регистра — чтобы поиск автоматически игнорировал различия в регистре.
  • Нужна ли лицензия? Бесплатная пробная версия подходит для разработки; полная лицензия требуется для продакшн‑развёртываний.
  • Какая версия Java требуется? Java 8 или новее; библиотека оптимизирована для Java 11+ для лучшей производительности.
  • Можно ли переключиться на поиск с учётом регистра при необходимости? Да — параметры поиска позволяют включать чувствительность к регистру для отдельного запроса.

Что означает “add documents to index” в GroupDocs.Search?

Загружайте ваши исходные файлы (PDF, DOCX, TXT и т.д.) в поисковый индекс, чтобы движок мог быстро их извлекать. Добавление документов в индекс разбирает каждый файл, извлекает чистый текст и сохраняет его в оптимизированной структуре данных, обеспечивая быстрый поиск.

Почему включать замену символов во время индексации?

Замена символов преобразует каждый символ в предопределённый эквивалент — чаще всего в нижний регистр — во время построения индекса. Это гарантирует, что различия в написании, диакритических знаках или специфических для локали символах не влияют на результаты поиска. Нормализуя текст при индексации, движок может сопоставлять запросы с единым набором токенов, обеспечивая быстрый и надёжный поиск без учёта регистра без дополнительной обработки при каждом поиске.

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

  • GroupDocs.Search for Java версии 25.4 или новее (библиотека поддерживает более 30 форматов файлов и может индексировать документы в сотни страниц без загрузки всего файла в память).
  • Java Development Kit (JDK) 8 или новее, установленный на системе.
  • Базовое знакомство с Maven (или возможность добавить JAR‑файлы вручную).

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

Настройка Maven

Добавьте репозиторий GroupDocs и зависимость в ваш 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>

Прямое скачивание

Если вы предпочитаете не использовать Maven, загрузите последний JAR с официального сайта: GroupDocs.Search for Java releases.

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

  • Бесплатная пробная версия – скачайте пробную лицензию, чтобы начать экспериментировать.
  • Временная лицензия – запросите расширенную тестовую лицензию через портал GroupDocs.
  • Полная лицензия – приобретите производственную лицензию, когда будете готовы к запуску.

Базовая инициализация (Создание индекса)

Следующий фрагмент кода создаёт папку индекса и включает замену символов:

import com.groupdocs.search.Index;
import com.groupdocs.search.IndexSettings;

String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/CharacterReplacementDuringIndexing";
IndexSettings settings = new IndexSettings();
settings.setUseCharacterReplacements(true);
Index index = new Index(indexFolder, settings);

Руководство по реализации

Включение замены символов в настройках индекса

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

Шаг 1: Настройка IndexSettings

IndexSettings — объект конфигурации, управляющий тем, как индекс хранит и обрабатывает текст. Установив useCharacterReplacements в true, вы включаете автоматическое приведение к нижнему регистру (или любую пользовательскую карту, которую вы предоставите).

import com.groupdocs.search.Index;
import com.groupdocs.search.IndexSettings;

String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/CharacterReplacementDuringIndexing";

// Create an instance of IndexSettings and enable character replacement.
IndexSettings settings = new IndexSettings();
settings.setUseCharacterReplacements(true);

// Initialize the index with these settings.
Index index = new Index(indexFolder, settings);

Настройка замен символов

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

Шаг 2: Определение и добавление пар замен

Словарь замен содержит пары, такие как 'A' → 'a', 'É' → 'e' и т.д. Добавление этих пар до индексации гарантирует, что каждый токен будет нормализован.

import com.groupdocs.search.dictionaries.CharacterReplacementPair;

// Access existing replacements and clear them.
index.getDictionaries().getCharacterReplacements().clear();

// Create an array for new replacements.
CharacterReplacementPair[] characterReplacements = new CharacterReplacementPair[Character.MAX_VALUE + 1];
for (int i = 0; i < characterReplacements.length; i++) {
    char originalChar = (char) i;
    char replacementChar = Character.toLowerCase(originalChar);
    characterReplacements[i] = new CharacterReplacementPair(originalChar, replacementChar);
}

// Add these replacements to the index's dictionary.
index.getDictionaries().getCharacterReplacements().addRange(characterReplacements);

Индексация документов

Теперь, когда индекс готов, вы можете add documents to index из любой папки.

Шаг 3: Добавление документов для индексации

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

import com.groupdocs.search.Index;

String documentFolder = "YOUR_DOCUMENT_DIRECTORY";

// Initialize the index and add documents.
Index index = new Index(indexFolder, settings);
index.add(documentFolder);

Выполнение поиска с учётом регистра (необязательно)

Шаг 4: Выполнение поисков с учётом регистра

SearchOptions настраивает поведение запроса, например, переключение чувствительности к регистру, позволяя точно контролировать, как выполняются поиски.
SearchOptions.setUseCaseSensitiveSearch(true) заставляет движок рассматривать символы верхнего и нижнего регистра как разные в конкретном запросе, переопределяя поведение поиска без учёта регистра по умолчанию.

import com.groupdocs.search.Index;
import com.groupdocs.search.SearchOptions;
import com.groupdocs.search.results.SearchResult;

String query = "Promotion";
SearchOptions options = new SearchOptions();
options.setUseCaseSensitiveSearch(true);

// Perform the search.
Index index = new Index(indexFolder, settings);
SearchResult result = index.search(query, options);

Практические применения

  1. Маркетинговые кампании – нормализуйте названия продуктов, чтобы команды продаж могли находить материалы без беспокойства о регистре.
  2. Служба поддержки – обеспечьте работу поисковых полей справочного центра, которые возвращают правильную статью независимо от того, введёт пользователь «login» или «Login».
  3. Каталоги электронной коммерции – гарантируйте, что покупатели найдут товары независимо от того, как они вводят названия, повышая коэффициент конверсии.

Соображения по производительности

  • Организуйте исходные файлы – упорядоченная иерархия папок сокращает время сканирования во время шага add documents to index.
  • Контролируйте память – индексация больших корпусов может потреблять значительный объём ОЗУ; обработка файлов партиями по 500 – 1 000 элементов удерживает использование кучи в пределах контроля.
  • Асинхронная индексация – при поддержке запускайте индексацию в фоновом потоке, чтобы UI оставался отзывчивым и не блокировал пользовательские операции.

Распространённые проблемы и их устранение

СимптомВероятная причинаРешение
Нет результатов для известного терминаЗамена символов не включенаПроверьте settings.setUseCharacterReplacements(true) и убедитесь, что карта замен содержит необходимые символы.
Ошибка «Out‑of‑memory» во время индексацииИндексация слишком большого количества крупных файлов одновременноИндексируйте небольшими партиями или увеличьте размер кучи JVM (-Xmx4g).
Поиск возвращает результаты с учётом регистра неожиданноБыл установлен SearchOptions.setUseCaseSensitiveSearch(true)Удалите или установите false для поведения без учёта регистра по умолчанию.
Время загрузки индекса превышает ожиданияНеэффективная структура папок или отсутствие SSDПереструктурируйте файлы, удалите неиспользуемые документы и храните индекс на быстром SSD.
Специальные символы игнорируютсяВ карте замен отсутствуют записи UnicodeДобавьте сопоставления для символов вроде “é”, “ß”, “ø” к их желаемым эквивалентам.

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

В: Как обрабатывать специальные символы (например, “é”, “ß”) во время индексации?
О: Включите эти символы в вашу карту замен, сопоставив их с ASCII‑эквивалентами или оставив без изменений в зависимости от требований поиска.

В: Можно ли ограничить замену символов конкретным языком?
О: Да. Создайте пользовательский массив замен, содержащий только символы целевого языка, перед добавлением его в словарь.

В: Что делать, если индексу требуется слишком много времени для загрузки?
О: Оптимизируйте структуру папок, удалите ненужные файлы и храните индекс на высокоскоростном SSD. Инкрементальная индексация также снижает нагрузку при загрузке.

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

В: Где найти более подробную документацию API?
О: Официальные документы и справочник API предоставляют исчерпывающие сведения (см. раздел «Ресурсы» ниже).

Ресурсы


Последнее обновление: 2026-07-31
Тестировано с: GroupDocs.Search 25.4 for Java
Автор: GroupDocs

Связанные руководства