Solr的4.3如何從Solr的多個「和」過濾器查詢排除特定的「變量」
這是我的查詢請求參數:
<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>
這是查詢響應「小面」的內容:
<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的形式工作。 – Jayendra
謝謝!你是對的!很高興!! – user2164641
酷..讓我把它作爲答案,你可以接受它。謝謝。 – Jayendra