来自查询

时间:2016-10-18 07:50:36

标签: string indexing solr

我是 Solr 的新手,我在以下问题上遇到了困难:

我试图从以下字段中提取,在网络界面中,只需要小时:

  "2016-08-15T10:28:03Z"

是否有像SQL一样的函数来提取给定模式的子字符串?

1 个答案:

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

重新索引数据。您将获得具有日期值的所有文档的小时值。