Как выполнять поиск синонимов в Java с использованием GroupDocs.Search

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

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

  • Какой основной шаг для добавления синонимов? Инициализировать Index и использовать API SynonymDictionary.
  • Можно ли импортировать словарь синонимов? Да — используйте importDictionary(path), чтобы загрузить заранее подготовленный файл.
  • Как включить поиск с синонимами? Установите SearchOptions.setUseSynonymSearch(true).
  • Можно ли управлять группами синонимов? Конечно — вы можете очищать, добавлять или получать группы через API словаря.
  • Что следует учитывать при оптимизации поискового индекса? Регулярно удаляйте неиспользуемые записи и настраивайте размер кучи JVM для больших наборов данных.

Что такое поиск синонимов?

«Поиск синонимов» означает, что движок рассматривает набор слов или фраз как взаимозаменяемые. Когда пользователь вводит «better», движок также ищет «improve», «enhance» или любой другой термин, определённый в той же группе синонимов, предоставляя более полные результаты без изменения запроса пользователя.

Почему стоит включить поддержку синонимов в GroupDocs.Search?

  • Лучший пользовательский опыт: Посетители находят релевантные документы, даже если используют другую терминологию.
  • Более высокий коэффициент конверсии: Платформы электронной коммерции захватывают больше продаж, сопоставляя различные варианты названий товаров.
  • Упрощённое обслуживание: Один центральный словарь может обслуживать несколько приложений, делая обновления простыми и безболезненными.

Требования

  • GroupDocs.Search for Java версии 25.4 или новее.
  • Java‑IDE (IntelliJ IDEA, Eclipse и т.д.) с поддержкой Maven.
  • Базовые знания Java и знакомство со структурой Maven‑проекта.

Необходимые библиотеки и версии

  • GroupDocs.Search for Java версии 25.4 или выше.

Настройка окружения

  • IDE по вашему выбору (IntelliJ IDEA, Eclipse и т.д.).
  • Maven для управления зависимостями.

Требуемые знания

  • Объектно‑ориентированное программирование на Java.
  • Базовые операции ввода‑вывода файлов.

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

Информация об установке

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

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

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

Базовая инициализация и настройка

Создайте экземпляр Index, затем добавьте документы для поиска:

import com.groupdocs.search.*;

String indexFolder = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/ManagingDictionaries/SynonymDictionary/Index";
String documentsFolder = "YOUR_DOCUMENT_DIRECTORY/DocumentsPath2";

// Creating an index in the specified folder
Index index = new Index(indexFolder);

// Adding documents from a specific folder to the index
index.add(documentsFolder);

Как добавить синонимы в ваш поисковый индекс

Создание индекса — фундамент. Ниже мы пройдём по ключевым шагам, каждый из которых сопровождается точным кодом, который вам нужен.

Функция 1: Создание и индексация индекса

// Create an index in the specified folder
Index index = new Index(indexFolder);

// Add documents from the given folder to the index
index.add(documentsFolder);

Функция 2: Получение синонимов для слова

String[] synonyms = index.getDictionaries().getSynonymDictionary().getSynonyms("make");

Функция 3: Получение групп синонимов

String[][] synonymGroups = index.getDictionaries().getSynonymDictionary().getSynonymGroups("make");

Функция 4: Управление записями словаря синонимов

if (index.getDictionaries().getSynonymDictionary().getCount() > 0) {
    index.getDictionaries().getSynonymDictionary().clear();
}

String[][] newSynonymGroups = new String[][]{
    new String[] { "achieve", "accomplish", "attain", "reach" },
    new String[] { "accept", "take", "have" },
    new String[] { "improve", "better" }
};

index.getDictionaries().getSynonymDictionary().addRange(newSynonymGroups);

Функция 5: Экспорт синонимов в файл

String exportFilePath = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/ManagingDictionaries/SynonymDictionary/Synonyms.dat";
index.getDictionaries().getSynonymDictionary().exportDictionary(exportFilePath);

Функция 6: Импорт синонимов из файла

index.getDictionaries().getSynonymDictionary().importDictionary(exportFilePath);

Функция 7: Выполнение поиска с поддержкой синонимов

String query = "better";
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true);

SearchResult result = index.search(query, options);

Как выполнять поиск с синонимами

Включив setUseSynonymSearch(true), движок автоматически расширяет запрос, используя построенный или импортированный словарь синонимов. Этот шаг критически важен для предоставления более полных результатов без изменения поведения поиска пользователя.

Как импортировать словарь синонимов

Если у вас уже есть файл .dat, подготовленный в другой среде, просто вызовите importDictionary(path). Это идеальный способ синхронизации словарей между серверами разработки, тестирования и продакшена.

Как управлять группами синонимов

Группы синонимов позволяют рассматривать набор терминов как единую логическую сущность. Добавление, очистка или получение групп осуществляется через API SynonymDictionary, как показано в приведённых выше фрагментах кода.

Как оптимизировать поисковый индекс

  • Регулярно удаляйте неиспользуемые записи: Используйте clear() перед массовыми обновлениями.
  • Настройте размер кучи JVM: Большие словари могут требовать больше памяти.
  • Поддерживайте библиотеку в актуальном состоянии: Новые релизы содержат улучшения производительности.

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

  1. Системы управления контентом (CMS): Пользователи находят статьи, даже используя альтернативную терминологию.
  2. Платформы электронной коммерции: Поиск товаров становится tolerant к синонимам типа «laptop» vs. «notebook».
  3. Репозитории документов: Юридические или медицинские архивы выигрывают от отраслевых групп синонимов.

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

  • Оптимизировать хранение индекса: Периодически перестраивайте индекс, чтобы удалить устаревшие данные.
  • Управлять использованием памяти: Следите за потреблением кучи при загрузке больших файлов синонимов.
  • Регулярные обновления: Оставайтесь на последней версии GroupDocs.Search для исправлений ошибок и ускорения работы.

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

ПроблемаВозможная причинаРешение
Нет совпадений по синонимамsetUseSynonymSearch(true) не установлен или словарь не импортированПроверьте, включена ли опция, и существует ли файл словаря.
Ошибки «Out‑of‑memory» при импортеОчень большой .dat файл превышает кучу JVMУвеличьте размер кучи -Xmx или импортируйте частями.
Дублирующиеся записи в результатахОдин и тот же термин присутствует в нескольких группах синонимовОбъедините пересекающиеся группы, используя clear(), затем addRange().

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

В: Каковы минимальные системные требования для использования GroupDocs.Search?
О: Любая современная ОС с совместимой JDK (Java 8 или новее) подходит.

В: Как часто следует обновлять словарь синонимов?
О: Обновляйте его при появлении новой терминологии — используйте clear(), затем addRange() для чистого обновления.

В: Можно ли использовать GroupDocs.Search без покупки лицензии?
О: Бесплатная пробная версия подходит для оценки, но для продакшн‑развёртываний требуется лицензия.

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

В: Я не получаю ожидаемых совпадений по синонимам — что проверить?
О: Убедитесь, что словарь правильно импортирован, setUseSynonymSearch(true) активен, и термины присутствуют в группах синонимов.

Ресурсы


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