2012-10-17 168 views
0

下面的查詢工作正常:Solr的查詢與分組不工作

q=field_one:value_one AND -field_two:[* TO *] AND -field_three:[* TO *] 

但是,只要我把括號在那裏我沒有得到任何結果

q=field_one:value_one AND (-field_two:[* TO *] AND -field_three:[* TO *]) 

是不是這兩個查詢相當於?

感謝所有

戴夫

NB:我這樣做是因爲我需要更多的 '並用的' OR的結合;而不僅僅是因爲我喜歡括號。

+0

好的......可能是括號表示內容作爲函數的參數?如果是這樣的話,那麼解析器不會完全失敗,因爲沒有函數名稱? – BanksySan

+0

據此:https://lucene.apache.org/core/old_versioned_docs/versions/3_0_0/queryparsersyntax.html#Grouping似乎是括號是正確的方式來解決這個問題。 – BanksySan

回答

0

換一個布爾值我有一些工作。

q=field_one:value_one AND -(field_two:[* TO *] OR field_three:[* TO *]) 

給出了與沒有括號的原始查詢相同的結果。

不知道爲什麼Solr對其他語法如此挑剔。對我來說似乎有點奇怪。

+2

第二種情況下的語法不起作用的原因是您正在創建一個不匹配的子查詢。 (-field_two:[* TO *] AND -field_three:[* TO *])。你告訴它放棄什麼,但不要給它任何東西包含在裏面,所以它什麼也得不到。在你的答案的語法中,你給了一個子查詢,用field_two或field_three中的值匹配所有內容,然後從field_one中獲得的結果中刪除它們:value_one – femtoRgon

+0

Hi @femtoRgon,謝謝回覆。我看起來像那樣,但這是我發現搜索缺少字段的唯一語法。 '-field [* TO *]'將返回所有沒有名爲「field」的字段的文檔。 – BanksySan