Как искать фразу с подстановочными знаками в GroupDocs.Search для Java

В современных приложениях, ориентированных на документы, как искать фразу быстро и точно является решающим фактором для пользовательского опыта. Независимо от того, создаёте ли вы базу знаний, каталог электронной коммерции или репозиторий, управляемый требованиями соответствия, возможность находить точную фразу — или её гибкую вариацию — повышает продуктивность пользователей и снижает нагрузку на поддержку. Этот учебник проведёт вас через установку GroupDocs.Search for Java, создание поискового индекса, загрузку документов и выполнение как точных, так и запросов с подстановочными знаками, предоставляя чёткие, готовые к продакшн‑использованию фрагменты кода.

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

  • Какова основная выгода от поиска фраз? Точное совпадение порядка слов и их близости, гарантируя, что возвращаются только документы, содержащие точную последовательность.
  • Можно ли использовать подстановочные знаки внутри фразы? Да — подстановочные знаки позволяют пропускать или заменять слова, сохраняя общий порядок.
  • Нужна ли лицензия для разработки? Бесплатная пробная версия подходит для тестирования; полная лицензия требуется для продакшн‑развёртываний.
  • Какую версию Maven следует использовать? Последний релиз GroupDocs.Search for Java (например, 25.4 на момент написания).
  • Подходит ли этот подход для больших наборов документов? Абсолютно — GroupDocs.Search может обрабатывать сотни тысяч документов с субсекундной задержкой запросов при оптимизированном индексе.

Что такое «как искать фразу»?

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

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

GroupDocs.Search обеспечивает высокопроизводительное индексирование до 1 миллиона документов при сохранении субсекундных откликов запросов на типичном серверном оборудовании. Его язык запросов поддерживает точные фразы, простые * и ? подстановочные знаки, а также расширенные шаблоны, такие как числовые диапазоны (*2~5). Библиотека интегрируется с любым Java‑приложением через Maven или прямую загрузку JAR и работает на Java 8+ без внешних сервисов.

Требования

  • Java 8 или новее (рекомендован Java 11 LTS).
  • Maven 3 или новее (если вы предпочитаете управление зависимостями).
  • Базовое знакомство со структурой проекта Java и объектно‑ориентированными концепциями.

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

Использование Maven

Добавьте официальный репозиторий и зависимость GroupDocs.Search в ваш pom.xml:

<!-- Maven repository -->
<repositories>
    <repository>
        <id>groupdocs-releases</id>
        <url>https://repository.groupdocs.com/release</url>
    </repository>
</repositories>

<!-- GroupDocs.Search dependency -->
<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-search</artifactId>
    <version>25.4</version>
</dependency>

Прямое скачивание

В качестве альтернативы загрузите последний JAR со страницы официальных релизов: GroupDocs.Search for Java releases.

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

  • Free Trial: Идеально для быстрых экспериментов; ограничено 100 MB индексированных данных.
  • Temporary License: Запросите 30‑дневный оценочный ключ в портале GroupDocs.
  • Full License: Требуется для продакшн‑использования и неограниченной ёмкости индекса.

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

Создайте папку, в которой будут храниться файлы индекса, и создайте объект Index. Класс Index представляет поисковый индекс, хранящийся на диске, и предоставляет методы для добавления, обновления и выполнения запросов к документам.

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

Добавьте документы, которые необходимо сделать доступными для поиска:

String indexFolder = "YOUR_OUTPUT_DIRECTORY/PhraseSearch";
Index index = new Index(indexFolder);

Как искать фразу с подстановочными знаками в GroupDocs.Search

В этом разделе демонстрируются три уровня поиска фраз — точное совпадение, простой подстановочный знак и расширенные шаблоны — показывая, как создать индекс, добавить документы и выполнить каждый тип запроса с помощью лаконичного кода Java. Примеры иллюстрируют как текстовые запросы, так и объектно‑ориентированное построение запросов, позволяя разработчикам интегрировать гибкие возможности поиска в свои приложения.

Простой поиск фразы

Обзор

Используйте этот подход, когда требуется точное совпадение последовательности слов, например юридический пункт или номер модели продукта.

Прямой ответ

Загрузите индекс, вызовите search с фразой в кавычках (например, "quick brown fox"), и движок вернёт только документы, содержащие эту точную последовательность, сохраняя порядок слов и пробелы. Запрос выполняется за миллисекунды, даже в индексах, содержащих сотни тысяч файлов.

Шаг 1: Создать индекс

String documentsFolder = "YOUR_DOCUMENT_DIRECTORY";
index.add(documentsFolder);

Шаг 2: Добавить документы в индекс

Index index = new Index(indexFolder);

Шаг 3: Поиск конкретной фразы (текстовая форма)

index.add(documentsFolder);

Шаг 4: Объектно‑ориентированные запросы (поиск точной фразы)

String queryText = "\"sollicitudin at ligula\"";
SearchResult resultText = index.search(queryText);

Поиск фразы с подстановочными знаками

Обзор

Подстановочные знаки (* — любое количество символов, ? — один символ) позволяют пропускать переменные слова, сохраняя при этом порядок окружающих слов.

Прямой ответ

Вставьте токен подстановочного знака (*) внутрь кавычек — например, "quick * fox" — чтобы сопоставить любые слово(а) между quick и fox. Движок разворачивает подстановочный знак во время выполнения запроса, просматривая только индексированные термины, удовлетворяющие шаблону, что сохраняет производительность, сравнимую с обычным запросом фразы.

Шаг 1: Создать индекс

  • (То же, что и простой поиск фразы.)*

Шаг 2: Добавить документы в индекс

  • (То же, что и выше.)*

Шаг 3: Текстовый поиск с подстановочными знаками

SearchQuery word1 = SearchQuery.createWordQuery("sollicitudin");
SearchQuery word2 = SearchQuery.createWordQuery("at");
SearchQuery word3 = SearchQuery.createWordQuery("ligula");
SearchQuery queryObject = SearchQuery.createPhraseSearchQuery(word1, word2, word3);
SearchResult resultObject = index.search(queryObject);

Шаг 4: Объектно‑ориентированные запросы с подстановочными знаками (Wildcard Search Java)

String queryText = "\"sollicitudin *0~~3 ligula\"";
SearchResult resultText = index.search(queryText);

Расширенный поиск с подстановочными знаками

Обзор

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

Прямой ответ

Используйте расширенный синтаксис подстановочного знака *min~max для определения диапазона допустимых расстояний между словами, или ? для сопоставления одного символа. Например, "error *2~5 code" найдёт слово error, за которым следуют от двух до пяти слов, а затем code. Такая точность уменьшает количество ложных срабатываний, сохраняя гибкость.

Шаг 1: Создать индекс

  • (Повторено для ясности.)*

Шаг 2: Добавить документы в индекс

  • (Повторено.)*

Шаг 3: Текстовый поиск со сложными шаблонами подстановочных знаков

SearchQuery word1 = SearchQuery.createWordQuery("sollicitudin");
SearchQuery wildcard2 = SearchQuery.createWildcardQuery(0, 3);
SearchQuery word3 = SearchQuery.createWordQuery("ligula");
SearchQuery queryObject = SearchQuery.createPhraseSearchQuery(word1, wildcard2, word3);
SearchResult resultObject = index.search(queryObject);

Шаг 4: Объектно‑ориентированные запросы с расширенными подстановочными знаками

String queryText = "\"sollicitudin *0~~3 ?(0~4)la\"";
SearchResult resultText = index.search(queryText);

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

  • Content Management Systems: Редакторы могут находить точные пункты или гибкие отрывки без ручного сканирования сотен страниц.
  • E‑commerce Catalogs: Покупатели находят товары даже если опускают описание или используют синонимы, благодаря поддержке подстановочных знаков.
  • Legal & Compliance: Быстро изолировать договорной язык, который может появляться с небольшими вариациями в разных соглашениях.

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

  • Create Search Index только один раз для стабильного набора документов; переиспользуйте тот же экземпляр Index для всех запросов.
  • Add Documents Incrementally при появлении новых файлов — избегайте полного перестроения индекса, чтобы снизить нагрузку на CPU.
  • Design Precise Wildcard Patterns; более широкие шаблоны (*) увеличивают количество расширений терминов и могут повысить нагрузку на CPU.
  • Call index.optimize() периодически (если поддерживается) для сжатия индекса и контроля потребления памяти.

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

ПроблемаРешение
Не возвращаются результаты для запроса с подстановочным знакомПроверьте синтаксис подстановочного знака (*min~max) и убедитесь, что целевые слова находятся в заданном расстоянии.
Индекс устаревает после обновления файловИспользуйте index.add(updatedFolder) или API инкрементального обновления, чтобы обновлять только изменённые файлы.
Высокое потребление памяти на больших наборах данныхУвеличьте размер кучи JVM (-Xmx4g или больше) и рассмотрите возможность разделения индекса на несколько шардов для параллельной обработки.

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

В: В чём разница между подстановочным знаком и поиском фразы?
О: Поиск фразы требует точного порядка слов и пробелов, тогда как подстановочный знак позволяет заменять или пропускать слова внутри этого порядка, обеспечивая гибкое сопоставление.

В: Можно ли использовать подстановочные знаки с числовыми данными в поиске?
О: Да — параметры диапазона подстановочных знаков (*min~max) работают с числами так же, как и со словами, позволяя запросы типа "version *1~3".

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

В: Подходит ли GroupDocs.Search для сценариев поиска в реальном времени?
О: Абсолютно — после построения индекса запросы выполняются за миллисекунды, что делает его идеальным для интерактивных поисковых полей и функций автодополнения.

В: Можно ли интегрировать эту библиотеку в существующий Java‑проект?
О: Да. Добавьте зависимость Maven или JAR, создайте экземпляр Index, как показано, и вы готовы выполнять запросы без изменения существующего кода.


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

double word1 = SearchQuery.createWordQuery("sollicitudin");
SearchQuery wildcard2 = SearchQuery.createWildcardQuery(0, 3);

WordPattern pattern = new WordPattern();
pattern.appendWildcard(0, 4);
pattern.appendString("la");

SearchQuery wordPattern3 = SearchQuery.createWordPatternQuery(pattern);
SearchQuery queryObject = SearchQuery.createPhraseSearchQuery(word1, wildcard2, wordPattern3);
SearchResult resultObject = index.search(queryObject);

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