我正在使用Solr7。我有一个类型为“ pdate”的字段“ date”,其中包含一个日期,例如
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”。
如果我使用Solr Admin UI中的Analysis进行测试,也会发现PatternCaptureGroupFilterFactory正确解析了我的日期以输出我的小时。
问题是PatternCaptureGroupFilterFactory的结果只是没有被推送到“小时”字段...