Добавить документы в индекс для поиска без учета регистра в 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);
Практические применения
- Маркетинговые кампании – нормализуйте названия продуктов, чтобы команды продаж могли находить материалы без беспокойства о регистре.
- Служба поддержки – обеспечьте работу поисковых полей справочного центра, которые возвращают правильную статью независимо от того, введёт пользователь «login» или «Login».
- Каталоги электронной коммерции – гарантируйте, что покупатели найдут товары независимо от того, как они вводят названия, повышая коэффициент конверсии.
Соображения по производительности
- Организуйте исходные файлы – упорядоченная иерархия папок сокращает время сканирования во время шага 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 предоставляют исчерпывающие сведения (см. раздел «Ресурсы» ниже).
Ресурсы
- Документация
- Справочник API
- Скачать GroupDocs.Search
- Репозиторий GitHub
- Форум бесплатной поддержки
- Информация о временной лицензии
Последнее обновление: 2026-07-31
Тестировано с: GroupDocs.Search 25.4 for Java
Автор: GroupDocs