Генерация единственного и множественного числа в Java с GroupDocs.Search

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

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

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

Что такое функция «Create Word Forms Provider»?

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

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

  • Встроенная расширяемость: Подключайте свой собственный провайдер непосредственно в конвейер индексации.
  • Оптимизированная производительность: Эффективно обрабатывает большие индексы, а также позволяет кэшировать результаты для повышения скорости.
  • Поддержка кросс‑языковости: Концепции применимы и к .NET, и к другим платформам.

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

Перед реализацией create word forms provider убедитесь, что у вас есть:

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

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

Конфигурация Maven

Add the repository and dependency to your pom.xml file exactly as shown below:

<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. Покупка: Приобретите коммерческую лицензию для неограниченного использования в продакшн.

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

The following snippet demonstrates how to create an index—your starting point for adding documents and word‑form logic:

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.");
    }
}

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

Below we walk through the steps to create word forms provider that handles simple singular‑to‑plural and plural‑to‑singular transformations.

Реализация SimpleWordFormsProvider

Обзор

Our custom provider will:

  • Удалять конечные «es» или «s», чтобы предположить форму единственного числа.
  • Заменять конечное «y» на «is», чтобы получить форму множественного числа (например, «city» → «citis»).
  • Добавлять «s» и «es», чтобы генерировать базовые варианты множественного числа.

Шаг 1 – Создание скелета класса

Start by defining a class that implements IWordFormsProvider. Keep the import statements unchanged:

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

public class SimpleWordFormsProvider implements IWordFormsProvider {

Шаг 2 – Реализация getWordForms

Add the method that builds the list of possible forms. This block contains the core logic; you can extend it later to cover more complex rules.

    @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.

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

Implementing a create word forms provider can boost several real‑world scenarios:

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

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

When you embed the provider into a production system, keep these tips in mind:

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

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

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

Заключение

You’ve now learned how to generate singular plural forms in Java using a custom SimpleWordFormsProvider with GroupDocs.Search. This lightweight component can dramatically improve the relevance of search results and the accuracy of linguistic analysis across many applications.

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

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

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

Раздел FAQ

1. Что такое GroupDocs.Search for Java?
Это мощная библиотека, предоставляющая полнотекстовый поиск, индексацию и лингвистические функции, включая возможность подключать пользовательские провайдеры форм слов.

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

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

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

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


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