我是 Solr 的新手,我在以下问题上遇到了困难:
我试图从以下字段中提取,在网络界面中,只需要小时:
"2016-08-15T10:28:03Z"
是否有像SQL一样的函数来提取给定模式的子字符串?
答案 0 :(得分:1)
使用solr的PatternReplaceFilterFactory。
你可以获得带有小时值的新字段(比如小时) 在结果集中。
示例:
{
"id":"1",
"name":"iPhone",
"date":"2016-08-15T10:28:03Z",
"Hour":"10"
}
要使其正常工作,您需要进行一些架构修改,添加具有您选择名称的新字段(比如Hour_dt)。
<field name="Hour_dt" type="H_date" indexed="true" stored="true"/>
从字段中复制字段,其中包含日期值&#34; 2016-08-15T10:28:03Z&#34;(说日期)
<copyField source="date" dest="Hour_dt"/>
用于字段定义,请参阅下面的
<fieldType name="H_date" class="solr.TextField" sortMissingLast="true" >
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="\d+-\d+-\d+T" replacement="" replace="all" />
<filter class="solr.PatternReplaceFilterFactory" pattern=":\d+:\d+Z" replacement="" replace="all" />
</analyzer>
</fieldType>
重新索引数据。您将获得具有日期值的所有文档的小时值。