Apache Solr применяет фасеты к результатам запроса - PullRequest
0 голосов
/ 08 октября 2019

У меня большой индекс, и мой пользователь может просматривать только некоторые результаты, но если я выполню запрос с 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. первый запрос - это «базовый» запрос, подмножество результатов следует рассматривать как новый индекс для поиска с

...