Пользовательский формат даты Java | Поиск диапазона дат с GroupDocs

Поиск документов по дате — частое требование, будь то создание архивной системы, инструмента финансовой отчетности или портала управления контентом. В этом руководстве вы изучите custom date format java техники с использованием GroupDocs.Search, охватывающие запросы диапазона дат, определения пользовательских шаблонов и советы по optimize search performance. К концу вы сможете позволить пользователям получать записи, попадающие в любой интервал дат, независимо от используемого формата.

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

  • Каков основной класс для индексации? Index from the com.groupdocs.search package.
  • Как определить пользовательский шаблон даты? Use DateFormat with DateFormatElement objects and a separator.
  • Можно ли выполнять поиск с текстовым запросом? Yes, the daterange(start ~~ end) syntax works directly in the query string.
  • Какие координаты Maven требуются? com.groupdocs:groupdocs-search:25.4 (or newer).
  • Нужна ли лицензия для разработки? A free trial or temporary license is sufficient for testing; a commercial license is required for production.

Что такое custom date format java?

custom date format java сообщает GroupDocs.Search, как интерпретировать строки дат, которые не соответствуют шаблону ISO по умолчанию (YYYY‑MM‑DD). Определив собственный шаблон — например MM/dd/yyyy или dd‑MM‑yyyy — вы позволяете движку распознавать даты, встроенные в документы, использующие региональные или устаревшие форматы.

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

  • Скорость: Встроенное индексирование делает поиск O(log n).
  • Гибкость: Поддерживает создание запросов как на основе текста, так и на основе объектов.
  • Поддержка нескольких форматов: Обрабатывает PDF, Word, Excel, обычный текст и многое другое без дополнительного кода.

Как search documents by date с GroupDocs.Search

Ниже вы найдете пошаговое руководство, которое проведет вас через настройку библиотеки, индексацию файлов и выполнение как простых, так и расширенных поисков диапазона дат.

Требования

  • Java 8 или новее установлен.
  • Maven для управления зависимостями.
  • Доступ к лицензии GroupDocs.Search (пробная или временная подходит для разработки).

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

Прямая загрузка

В качестве альтернативы вы можете загрузить последнюю версию напрямую с GroupDocs.Search for Java releases.

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

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

import com.groupdocs.search.*;

String indexFolder = "YOUR_INDEX_DIRECTORY";
String documentsFolder = "YOUR_DOCUMENTS_DIRECTORY";

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

// Indexing documents from the specified folder
index.add(documentsFolder);

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

Использование текстового запроса

Самый простой способ — встроить диапазон дат непосредственно в строку запроса:

import com.groupdocs.search.*;
import com.groupdocs.search.results.*;

// Define directories (as previously shown)

Index index = new Index(indexFolder);
index.add(documentsFolder);

// Create a text-based query for the specified date range
String query1 = "daterange(2017-01-01 ~~ 2019-12-31)";
SearchResult result1 = index.search(query1);

Explanation: Синтаксис daterange ожидает даты в формате YYYY‑MM‑DD. Он возвращает все документы, чьи проиндексированные даты попадают в указанный интервал.

Использование объекта запроса

Для программного управления и пользовательского парсинга создайте объект SearchQuery:

import com.groupdocs.search.*;
import com.groupdocs.search.options.*;
import com.groupdocs.search.results.*;

// Define directories (as previously shown)

Index index = new Index(indexFolder);
index.add(documentsFolder);

// Create a date range query using the Query API
SearchQuery query2 = SearchQuery.createDateRangeQuery(Utils.createDate(2017, 1, 1), Utils.createDate(2019, 12, 31));
SearchResult result2 = index.search(query2);

Explanation: createDateRangeQuery позволяет передавать объекты java.util.Date, предоставляя полную гибкость в работе с часовыми поясами и локальными особенностями.

Функция 2: Указание шаблонов custom date format java

Установка пользовательских форматов даты

Определите DateFormat, соответствующий представлению даты в вашем документе:

import com.groupdocs.search.*;
import com.groupdocs.search.options.*;
import com.groupdocs.search.results.*;

// Define directories (as previously shown)

Index index = new Index(indexFolder);
index.add(documentsFolder);

// Configure search options with custom date formats
SearchOptions options = new SearchOptions();
options.getDateFormats().clear(); // Remove default formats

DateFormatElement[] elements = new DateFormatElement[]{
    DateFormatElement.getMonthTwoDigits(),
    DateFormatElement.getDateSeparator(),
    DateFormatElement.getDayOfMonthTwoDigits(),
    DateFormatElement.getDateSeparator(),
    DateFormatElement.getYearFourDigits()
};

// Create a custom date format pattern 'MM/dd/yyyy'
DateFormat dateFormat = new DateFormat(elements, "/");
options.getDateFormats().addItem(dateFormat);

String query = "daterange(01/01/2017 ~~ 12/31/2019)";
SearchResult result = index.search(query, options);

Explanation: Очистив форматы по умолчанию и добавив DateFormat с разделителем /, движок теперь понимает даты, записанные как MM/dd/yyyy. Это необходимо для search documents by date в регионах, где предпочтительно указание месяца первым.

Советы по optimize search performance

  • Index Incrementally: Добавляйте новые файлы в существующий индекс вместо полной перестройки.
  • Prune Stale Data: Периодически удаляйте документы, которые больше не нужны.
  • Adjust Memory Settings: Увеличьте размер кучи JVM (-Xmx) при работе с большими индексами.

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

  • Date Parsing Errors: Убедитесь, что строки дат в документе точно соответствуют определённому вами пользовательскому шаблону.
  • Missing Results: Убедитесь, что проиндексированные поля содержат метаданные даты; иначе движок не сможет сопоставить запросы по дате.
  • Index Access Exceptions: Убедитесь, что путь indexFolder доступен для записи и не заблокирован другим процессом.

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

  1. Archival Systems – Получайте записи за определённый исторический период.
  2. Content Management – Поддержка региональных форматов дат, таких как dd/MM/yyyy, для европейской аудитории.
  3. Financial Software – Быстро фильтруйте транзакции по финансовому кварталу или году.

Заключение

Теперь у вас есть полный набор инструментов custom date format java для создания мощных поисков диапазона дат с GroupDocs.Search. Реализуйте эти шаблоны, оптимизируйте производительность, и ваше приложение будет предоставлять быстрые и точные результаты для любых временных запросов.

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

Q: В чём разница между текстовым запросом и объектно‑ориентированными запросами даты?
A: Текстовый запрос быстрый и простой, но ограничен форматом ISO по умолчанию; объектно‑ориентированные запросы позволяют передавать объекты Date и пользовательские форматы для большей гибкости.

Q: Можно ли искать несколько диапазонов дат в одном запросе?
A: Да, объединяйте условия daterange с логическими операторами, такими как AND или OR, чтобы построить сложные запросы.

Q: Замедлят ли пользовательские форматы дат поиск?
A: Есть небольшие накладные расходы на дополнительный разбор, но влияние несущественно для типовых нагрузок и перекрывается преимуществами в точности.

Q: Подходит ли GroupDocs.Search для крупномасштабных развертываний?
A: Безусловно. При правильных стратегиях индексирования и настройке JVM он масштабируется до миллионов документов.

Q: Где можно найти больше примеров на Java?
A: Изучите GroupDocs GitHub repository для дополнительных примеров и реализаций сценариев.


Resources


Последнее обновление: 2025-12-18
Тестировано с: GroupDocs.Search Java 25.4
Автор: GroupDocs