Я использую Solr 7. У меня есть поле "date" типа "pdate", которое содержит такую дату, как
2019-01-24T14:43:13Z
.
<field name="date" type="pdate" stored="true"/>
Я хочу, чтобы с этой даты индексировать в поле «час» значение 14:43:13
.
Для этого я создал новое поле
<field name="hour" type="parsed_hour" indexed="true" stored="true"/>
Я использовал поле копирования, чтобы ввести в "час" значение моей "даты"
<copyField source="date" dest="hour"/>
и настройте PatternCaptureGroupFilterFactory, чтобы убедиться, что «час» содержит только цифры часа значения «дата».
<fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
<fieldType name="parsed_hour" class="solr.TextField">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.PatternCaptureGroupFilterFactory" pattern="(\d{2}:\d{2}:\d{2})" preserve_original="false"/>
</analyzer>
</fieldType>
Я попробовал регулярное выражение, и оно захватывает правильную группу:
https://regex101.com/r/r7Id29/1
Но в результате после индексации я вижу, что мое поле "час" является точной копией моего "поля даты", без каких-либо изменений.
Я ожидал, что «час» будет иметь значение «14:43:13».
Также, если я тестирую с использованием Analysis в Solr Admin UI, я вижу, что моя дата правильно анализируется с помощью PatternCaptureGroupFilterFactory для вывода моего часа.
![enter image description here](https://i.stack.imgur.com/P5zK8.png)
Проблема в том, что PatternCaptureGroupFilterFactory просто не помещается в поле "час" ...
![enter image description here](https://i.stack.imgur.com/UZNj3.png)