Apache Solr将方面应用于查询结果

时间:2019-10-08 10:32:21

标签: post solr guzzle facet faceted-search

我的索引很大,我的用户只能查看一些结果,但是如果我用facet=on执行查询,我将获得所有索引构面,而不仅是查询结果的构面。我在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"

枪口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进行新查询。第一个查询是“基础”查询,结果子集被视为要从中搜索的新索引

0 个答案:

没有答案