2013-07-13 34 views
1

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查詢。如何解決它?

+1

你可以試試fq =!tag = city} CityId:729&fq = {!tag = company} CompanyId:16122作爲單獨的標籤,應該以AND的形式工作。 – Jayendra

+0

謝謝!你是對的!很高興!! – user2164641

+0

酷..讓我把它作爲答案,你可以接受它。謝謝。 – Jayendra

回答

1

你可以嘗試fq=!tag=city}CityId:729&fq={!tag=company}CompanyId:16122作爲單獨的標籤應爲工作和。

1

使用:FQ = {CityId標籤=城市!}:729 & FQ = {!標籤=公司} CompanyId:16122