2016-12-17 366 views
0

我正在嘗試向使用SOLR進行查詢的API發出url請求。在SOLR查詢中排除具有空值的字段

我有很多包含不同值的字段的數據,並且通常這些字段中的某些字段將包含空值。

我想做一個查詢,我檢索所有的數據,其中特定字段不爲空,但包含一些實際值。

例如,每個條目都包含一個名爲tags的字段,它是一組標籤。一個標籤可以是例如單詞測試。

我已經嘗試過執行標籤:[* TO *],並導致所有標籤爲空的數據集返回。

我也試過標籤:[* TO *],它返回所有數據,兩個標籤都是空的,標籤實際設置在哪裏。

我一直在嘗試各種各樣的事情,以達到最後一種情況,只有值的標籤返回,我希望你能幫助我?

+0

你可以嘗試在你的標籤領域 –

+0

做一個正則表達式匹配喜@Bino達達爾能否詳細說明這將如何工作? – Luffen

+0

類似於'tags:/ [A-Za-z0-9] + /'。雖然我不確定Unicode是否支持正則表達式匹配器,但對於大多數情況,這應該起作用。 –

回答

0

andAND不一樣 - 這是您必須在查詢中使用的分隔符。您的查詢可能只是搜索(and其中某個地方在默認字段中的文檔)或(deleted:false)或(tags:[* TO *])。

使用適當的分隔符和周圍的空格來分組多個條件。我還建議使用過濾器查詢(fq)爲靜態(如deleted:false),因爲它允許將該查詢與實際查詢分開進行緩存。

0

你的問題有點令人困惑,因爲你使用了像「檢索數據」和「檢索字段」這樣的術語,這會造成混淆。在SOLR中,查詢指定檢索哪些文檔(或記錄)。

如果你想所有在該領域的「標籤」的一些價值的文檔,你可以使用

(tags:*) 

如果你想有沒有在現場「標籤」有一個值的所有文檔,然後你可以使用:

(*:* AND NOT tags:*) 

(*:* AND -tags:*) 
+0

喜雨果, 感謝您的回答,我有用(tags:*)試過,如果它只是字符串字段,它就可以正常工作,但它似乎是因爲這是一個Set,它仍然返回空字段 – Luffen

+0

該字段是否爲空**不爲空?您可以使用自定義UpdateRequestProcessor鏈去除空字段。 –

+0

奇怪,你應該向我們展示一個這樣的文檔的例子......也許如果你序列化爲JSON而不是XML,你會更清楚地看到它的價值是什麼(你可以用&wt = json查詢參數來做到這一點) –