У меня большой индекс, и мой пользователь может просматривать только некоторые результаты, но если я выполню запрос с facet=on
, я получу все фасеты индекса, а не только фасеты результатов запроса. Я использую Guzzle в Laravel, и мне нужно использовать post вместо get из-за очень длинной строки запроса, поэтому я использую параметр формы "q" для запроса к Solr, и к URL добавляется огранка:
Пример параметров запроса
$searchQuery = [
"q" => "({!terms f=isbn_s}9788808440877,9788808342010,9788808820914,9788808504005, ...) AND (title_s:**)"
"wt" => "json"
"indent" => true
"facet" => "on"
"rows" => 9
"sort" => "title_s asc"
"start" => 0
"f.subjects_ss.facet.mincount" => 0
"f.year_ss.facet.mincount" => 0
"f.authors_ss.facet.mincount" => 0
]
Пример URL запроса
$url = env('BASE_URL') . "/select?facet.field=subjects_ss&facet.field=year_ss&facet.field=authors_ss"
Запрос на жадность POST
$request = $client->request("POST", $url, [
'headers' => [
'Content-type' => 'application/x-www-form-urlencoded',
'Accept' => 'application/json'
],
'form_params' => $searchQuery
]);
Пример результатов, которые у меня есть:
"facets": {
"subjects": {
"math": 35,
"english": 24,
"italian": 0,
"physics": 0
}
}
Но я хочу что-то вроде этого:
"facets": {
"subjects": {
"math": 35,
"english": 24
}
}
Это возможно? Мне нужно использовать mincount=0
в полях фасетов для отображения всех фасетов пользователю (тоже пустых), но я не хочу отображать фасеты, которые не связаны с «базовым» запросом
РЕДАКТИРОВАТЬ
Чтобы уточнить: я хочу выполнить запрос с facet.mincount = 1
, а в подмножестве результатов я хочу новый запрос с facet.mincount = 0
. первый запрос - это «базовый» запрос, подмножество результатов следует рассматривать как новый индекс для поиска с