Post ApacheSolr在查询结果上应用facet

Post ApacheSolr在查询结果上应用facet,post,solr,guzzle,facet,faceted-search,Post,Solr,Guzzle,Facet,Faceted Search,我有一个很大的索引,我的用户只能查看一些结果,但是如果我使用facet=on执行查询,我会得到所有索引facet,而不仅仅是查询结果的facet。我在Laravel中使用Guzzle,由于查询字符串很长,我需要使用post而不是get,因此我使用表单参数“q”来查询Solr,并且面元素被附加到url: 查询参数示例 $searchQuery = [ "q" => "({!terms f=isbn_s}9788808440877,9788808342010,9788808820914,9

我有一个很大的索引,我的用户只能查看一些结果,但是如果我使用
facet=on
执行查询,我会得到所有索引facet,而不仅仅是查询结果的facet。我在Laravel中使用Guzzle,由于查询字符串很长,我需要使用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 = env('BASE_URL') . "/select?facet.field=subjects_ss&facet.field=year_ss&facet.field=authors_ss"
查询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 = 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
  }
}
有可能吗?我需要在facet字段中使用
mincount=0
向用户显示所有facet(也为空),但我不想显示与“基本”查询无关的facet

编辑


澄清一下:我想用
facet.mincount=1
执行一个查询,在结果子集上我想用
facet.mincount=0
执行一个新查询。第一个查询是“基本”查询,结果子集将被视为一个新的索引,从中搜索

Solr响应中返回的方面将从您的初始查询中计算出来。你所说的
是什么意思?我不想显示与“基本”查询不相关的facet
?作为“基本”查询,我指的是查询找到的文档子集。我想象的流程是:初始查询->在mincount=0的已找到文档上刻面->下一个查询当您设置
mincount=0
时,您告诉Solr您希望返回令牌,即使它们不存在于与您的查询匹配的任何文档中。基于您的示例,我不确定您为什么希望这样做-您能展示mincount=0的用例吗?这是一个极端情况,我希望使用
facet.mincount=1
执行查询,并在结果子集上使用
facet.mincount=0
执行新查询。第一个查询是“基本”查询,结果子集将被视为一个新索引