#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>
Переиндексируйте данные. вы получаете значения часов для всех документов, которые имеют значения даты.