如何从 solr 多个"AND"过滤器查询排除特定"Tag"



solr 4.3

这是我的查询请求参数:

<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">15</int>
  <lst name="params">
    <str name="facet">true</str>
    <str name="indent">true</str>
    <str name="q">*:*</str>
    <str name="_">1373713374569</str>
    <arr name="facet.field">
      <str>{!ex=city}CityId</str>
      <str>{!ex=company}CompanyId</str>
    </arr>
    <str name="wt">xml</str>
    <str name="fq">{!tag=city}CityId:729 AND {!tag=company}CompanyId:16122</str>
  </lst>
</lst>

这是查询响应"Facet"内容:

<lst name="facet_counts">
  <lst name="facet_queries"/>
  <lst name="facet_fields">
    <lst name="CityId">
      <int name="11">100171</int>
      <int name="1404">89406</int>
      <int name="0">77477</int>
      <int name="1366">65780</int>
      <int name="1362">58092</int>
      <int name="729">29213</int>
      <int name="798">28975</int>
               ...
      <int name="7262">808</int>
      <int name="432">776</int>
      <int name="1146">772</int>
      <int name="1653">765</int>
      <int name="1078">668</int>
      <int name="814">667</int>
      <int name="2049">402</int>
      <int name="456">401</int>
      <int name="401">390</int>
    </lst>
    <lst name="CompanyId">
      <int name="16122">971</int>
      <int name="69">0</int>
      <int name="71">0</int>
      <int name="72">0</int>
      <int name="79">0</int>
      <int name="80">0</int>
      <int name="85">0</int>
      <int name="88">0</int>
      <int name="94">0</int>
                ...
      <int name="98">0</int>
      <int name="104">0</int>
      <int name="112">0</int>
      <int name="113">0</int>
      <int name="118">0</int>
      <int name="123">0</int>
      <int name="126">0</int>
      <int name="131">0</int>
      <int name="136">0</int>
      <int name="139">0</int>
    </lst>
  </lst>
  <lst name="facet_dates"/>
  <lst name="facet_ranges"/>
</lst>

你可以看到CityId的"Facet"是正确的,它排除了{!Tag=city}CityId:729个查询,但CompanyId的"Facet"是不正确的,他不排除{!Tag=company}CompanyId:16122个查询。如何解决?

您可以尝试将fq=!tag=city}CityId:729&fq={!tag=company}CompanyId:16122作为单独的标签,它应该作为AND工作吗。

使用:fq={!tag=city}CityId:729&fq={!tag=company}CompanyId:16122

最新更新