Как генерировать формы в Java с GroupDocs.Search

В этом руководстве вы узнаете как генерировать формы в Java с помощью API GroupDocs.Search. Создавая пользовательского поставщика word‑forms, вы позволяете вашему поисковому или текст‑аналитическому движку распознавать каждое вариацию термина — будь то «cat», «cats», «city» или «citis». Это значительно улучшает полноту при сохранении высокой точности.

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

  • Что делает поставщик word forms? Он генерирует альтернативные формы (единственное, множественное и т.д.) данного слова, чтобы поиск мог сопоставлять все варианты.
  • Какая библиотека требуется? GroupDocs.Search for Java (версия 25.4 или новее).
  • Нужна ли лицензия? Бесплатная пробная версия подходит для оценки; постоянная лицензия требуется для продакшн.
  • Какая версия Java поддерживается? JDK 8 или выше.
  • Сколько строк кода требуется? Около 30 строк для простой реализации поставщика.

Что такое функция «create word forms provider»?

create word forms provider — это пользовательский класс, реализующий IWordFormsProvider. IWordFormsProvider — интерфейс, определяющий, как поставщики предоставляют альтернативные формы слов поисковому движку. Он получает слово и возвращает массив возможных форм — единственное, множественное или другие лингвистические варианты — в соответствии с вашими правилами. Это позволяет индексу поиска рассматривать «cat» и «cats» как эквивалентные, улучшая полноту без потери точности.

Почему использовать GroupDocs.Search для генерации word‑form?

GroupDocs.Search предоставляет встроенную расширяемость, позволяя подключать ваш собственный провайдер непосредственно к конвейеру индексации. Он обрабатывает индексы до 10 миллионов документов, при этом потребление памяти не превышает 500 MB благодаря потоковой архитектуре, и вы можете кэшировать результаты для получения времени поиска менее миллисекунды.

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

  • Maven установлен, а JDK 8 или новее настроен на вашей машине.
  • Базовое знакомство с разработкой на Java и конфигурацией pom.xml Maven.
  • Доступ к библиотеке GroupDocs.Search Java (версия 25.4 или новее).

Настройка 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 for Java releases.

Шаги получения лицензии

  1. Бесплатная пробная версия: Зарегистрируйтесь для пробного периода, чтобы изучить основные возможности.
  2. Временная лицензия: Запросите временный ключ для расширенного тестирования.
  3. Покупка: Приобретите коммерческую лицензию для неограниченного использования в продакшн.

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

Следующий фрагмент демонстрирует, как создать индекс — вашу отправную точку для добавления документов и логики word‑form:

import com.groupdocs.search.*;

public class SearchSetup {
    public static void main(String[] args) {
        // Initialize an index
        Index index = new Index("path/to/index");
        
        System.out.println("GroupDocs.Search initialized successfully.");
    }
}

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

Ниже мы пройдем шаги по созданию поставщика word forms, который обрабатывает простые преобразования единственного числа в множественное и наоборот.

Реализация SimpleWordFormsProvider

Обзор

Класс SimpleWordFormsProvider реализует IWordFormsProvider. Якорь определения уточняет его назначение:

SimpleWordFormsProvider — это пользовательская реализация IWordFormsProvider, которая предоставляет варианты единственного‑множного числа для индексационного движка.

Шаг 1 – создать скелет класса

Начните с определения класса, реализующего IWordFormsProvider. Оставьте импортные инструкции без изменений:

import com.groupdocs.search.dictionaries.IWordFormsProvider;
import java.util.ArrayList;

public class SimpleWordFormsProvider implements IWordFormsProvider {

Шаг 2 – реализовать getWordForms

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

getWordForms получает термин и возвращает String[], содержащий все сгенерированные варианты.

    @Override
    public final String[] getWordForms(String word) {
        // Initialize a list to store generated word forms
        ArrayList<String> result = new ArrayList<>();

        // Singular form for words ending in 'es'
        if (word.length() > 2 && word.toLowerCase().endsWith("es")) {
            result.add(word.substring(0, word.length() - 2));
        }

        // Singular form for words ending in 's'
        if (word.length() > 1 && word.toLowerCase().endsWith("s")) {
            result.add(word.substring(0, word.length() - 1));
        }

        // Plural form by replacing 'y' with 'is'
        if (word.length() > 1 && word.toLowerCase().endsWith("y")) {
            result.add(word.substring(0, word.length() - 1).concat("is"));
        }

        // Basic plural forms
        result.add(word.concat("s"));
        result.add(word.concat("es"));

        // Convert list to array and return
        return result.toArray(new String[0]);
    }
}

Объяснение логики

  • Сингуларизация: Обнаруживает распространённые множественные суффиксы (es, s) и удаляет их, чтобы приблизительно получить базовое слово.
  • Плюрализация: Обрабатывает существительные, заканчивающиеся на y, заменяя его на is, простое правило, которое работает для многих английских слов.
  • Добавление суффиксов: Добавляет s и es для охвата обычных множественных форм, которые могут не быть пойманы предыдущими проверками.

Советы по устранению неполадок

  • Чувствительность к регистру: Метод использует toLowerCase() для сравнения, обеспечивая одинаковое поведение “Cats” и “cats”.
  • Пограничные случаи: Слова короче длины суффикса игнорируются, чтобы избежать возврата пустых строк.
  • Производительность: Для больших словарей рассмотрите кэширование результатов в ConcurrentHashMap.

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

Реализация create word forms provider может улучшить несколько реальных сценариев:

  1. Поисковые движки: Пользователи, вводящие «mouse», также должны находить документы с «mice». Поставщик может генерировать такие неправильные формы.
  2. Инструменты текстового анализа: Анализ тональности или извлечение сущностей становятся более надёжными, когда распознаются все варианты слов.
  3. Системы управления контентом: Автоматическое создание тегов может включать множественные синонимы, улучшая SEO и внутренние ссылки.

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

Когда вы внедряете провайдера в продакшн‑систему, учитывайте следующие рекомендации:

  • Кешировать часто используемые формы: Сохраняйте результаты в памяти, чтобы не пересчитывать одно и то же слово многократно.
  • Следите за кучей JVM: Большие индексы могут увеличить нагрузку на память; соответственно настройте -Xmx.
  • Используйте эффективные коллекции: ArrayList подходит для небольших наборов, но для тысяч форм рассмотрите HashSet для быстрого устранения дубликатов.

Лучшие практики

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

Заключение

Теперь вы узнали как генерировать формы в Java с помощью пользовательского SimpleWordFormsProvider в GroupDocs.Search. Этот легковесный компонент может значительно улучшить релевантность результатов поиска и точность лингвистического анализа во многих приложениях.

Следующие шаги

  • Экспериментируйте с более сложными лингвистическими правилами (неправильные множественные, стемминг).
  • Интегрируйте провайдера в конвейер индексации и измерьте улучшения полноты.
  • Исследуйте другие возможности GroupDocs.Search, такие как словари синонимов и пользовательские анализаторы.

Призыв к действию: Попробуйте добавить SimpleWordFormsProvider в свой проект уже сегодня и посмотрите, как он обогатит ваш поисковый опыт!

Раздел FAQ

Q: Что такое GroupDocs.Search для Java?
A: Это мощная библиотека, предоставляющая полнотекстовый поиск, индексацию и лингвистические возможности — включая возможность подключать пользовательские поставщики word‑form.

Q: Как работает SimpleWordFormsProvider?
A: Он генерирует альтернативные формы, применяя простые правила на основе суффиксов (удаление “s/es”, преобразование “y” в “is” и добавление “s/es”).

Q: Могу ли я настроить правила генерации word form?
A: Конечно. Измените метод getWordForms, чтобы включить неправильные формы, правила, специфичные для локали, или интеграцию с внешними словарями.

Q: Какие распространённые применения этой функции?
A: Поисковые движки, конвейеры текстового анализа и CMS‑платформы выигрывают от распознавания единственного/множественного вариантов.

Q: Нужна ли коммерческая лицензия для продакшн‑использования?
A: Да — хотя пробная версия позволяет изучить API, приобретённая лицензия снимает ограничения использования и предоставляет поддержку.


Последнее обновление: 2026-09-02
Тестировано с: GroupDocs.Search 25.4 (Java)
Автор: GroupDocs

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