2011-11-30 54 views
4

我有刻面問題。想象一下這種情況。產品可以在多個類別中。這是刻面共同的行爲:Solr複雜的刻面

類別

  • 的Android(25)
  • iPhone(55)
  • 其他(25)

現在,當我選擇 「Android」 的,我用「fq」=>「category:Android」做出新的查詢,我會得到:

類別

  • 的Android
  • iPhone(15)
  • 其他(2)

但這意味着有15種產品,即在類別 「機器人」 AND 「iPhone」。我想是這樣的:( 「機器人」 或 「iPhone」)

類別

  • 的Android
  • iPhone(+5)
  • 其他(+1)

這意味着我將通過選擇「Android(25)」和另外5個選擇「iPhone(+5)」得到25個結果,因此最終我將獲得30個搜索結果。

有沒有人知道這是可能與SOLR的面?或者可能有多個查詢並手動計算它?

感謝您的諮詢!

+0

通過選擇「Android」,您可以獲得25個結果,其中15個也具有「iPhone」類別。如果添加「iPhone」,則不會得到30個結果。用AND你會得到15個結果。如果你使用OR,你會得到25 + 55的結果。 +5從哪裏來? – morja

+0

「如果您使用OR,您將獲得25 + 55個結果」=>如果Product可以恰好在一個類別中,那麼情況就是如此。但在我的情況下,它可以在一個以上,所以或會給我30個結果.. – user987220

回答

3

嘗試一個新的查詢與否的選擇,如"fq" => "-category:Android" - 你應該得到你正在尋找的方面計數。

+0

非常感謝!這就是它! – user987220

3

根據您需要的所有排列方式,您可能需要查看query facets,這些排列使您可以獲得任意查詢的計數。例如,您可以執行facet.query=category:("Android" OR "iPhone")並獲得鍵入category:("Android" OR "iPhone")的計數結果。而且,你可以爲你想要的任何數量的查詢做到這一點。所以,就你的情況而言,你可能會得到一個最終的解決方案,它包含直接領域構面和查詢構面的組合。

編輯:重讀你的問題,你可能還需要尋找到tagging and excluding部分的額外fq,這取決於你如何讓你的用戶「選擇到」的選擇。 (文檔中的示例與原始設置非常接近,但我不確定最終行爲是否與您的願望完全相同)。

+0

感謝您的建議,我一定會研究這些,但從nikhil500的答案正是我正在尋找.. – user987220