Генерация единственного и множественного числа в 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.xmlMaven. - Доступ к библиотеке 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.
Шаги получения лицензии
- Бесплатная пробная версия: Зарегистрируйтесь для пробного доступа к основным функциям.
- Временная лицензия: Запросите временный ключ для расширенного тестирования.
- Покупка: Приобретите коммерческую лицензию для неограниченного использования в продакшн.
Базовая инициализация и настройка
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:
- Поисковые системы: Пользователи, вводящие «mouse», также должны находить документы с «mice». Провайдер может генерировать такие неправильные формы.
- Инструменты анализа текста: Анализ тональности или извлечение сущностей становятся надёжнее, когда распознаются все варианты слов.
- Системы управления контентом: Автоматическая генерация тегов может включать множественные синонимы, улучшая 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