Solr извлекает подстроку из запроса

#string #indexing #solr

#строка #индексирование #solr

Вопрос:

Я новичок в Solr, и у меня возникли трудности со следующей проблемой:

Я пытаюсь извлечь из следующего поля в веб-интерфейсе только час:

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

Существует ли функция, подобная SQL, для извлечения подстроки с заданным шаблоном?

Комментарии:

1. вы хотите извлекать информацию о часах только во время поиска или во время индексации?

Ответ №1:

Используя PatternReplaceFilterFactory из solr.

вы можете получить новое поле (скажем, час) со значением часа в результирующем наборе.

Пример :

 {
  "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"/>
  

скопируйте поле из поля, которое имеет значения даты «2016-08-15T10:28:03Z» (скажем, дата)

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

Переиндексируйте данные. вы получаете значения часов для всех документов, которые имеют значения даты.