У нас есть задача найти сообщения по связанным названиям городов и результаты групп по названию городов, вкл. количество сообщений.
В нашем поле местоположения у нас есть одно или несколько названий городов, разделенных запятой:
Берлин, Франкфурт, ..
<field name="location" type="text" indexed="true" stored="true"/>
Мы должны искать местоположение только по первому символу, например
f (в нижнем регистре): Франкфурт (в верхнем регистре) - 1200 сообщений, Фрайбург - 690 сообщений, ...
в нашем коде php / CakePHP у нас есть http-запрос, похожий на:
$fq = sprintf('location:%s*', mb_strtoupper($char));
$getResponse = $http->get($solrUrl, [
'facet.pivot' => 'location',
'facet.sort' => 'count',
'facet.limit' => 10000,
'facet.offset' => 0,
'facet' => 'true',
'facet.pivot.mincount' => 5,
'indent' => 'on',
'fq'=> $fq,
'wt' => 'json'
]);
Ответ:
[
'error' => [
'metadata' => [
(int) 0 => 'error-class',
(int) 1 => 'org.apache.solr.common.SolrException',
(int) 2 => 'root-error-class',
(int) 3 => 'org.apache.solr.common.SolrException'
],
'msg' => 'analyzer returned no terms for multiTerm term: F',
'code' => (int) 400
]
]
Как создать правильный запрос для нашей задачи?