2014-04-07 36 views
0

我有一個問題。我在solr有3個過濾器。讓我們稱他們爲過濾器A,B和C.我的要求是我想過濾器A是強制性的,B和C是可選的。如果我在過濾器之間編寫'&',那麼所有3將成爲強制性的。在索爾使用或在內容查詢

http://127.0.0.1:8983/solr/core1/select?q=*:*&fq=A:a_value&fq=B:b_value&fq=C:c_value&wt=xml&indent=true 

在它們之間使用或'OR'使得過濾器'A'不是強制性的。

http://127.0.0.1:8983/solr/core1/select?q=*:*&fq=A:a_value or B:b_value or C:c_value&wt=xml&indent=true 

我應該如何處理這種情況

回答

2

如果我正確理解你的問題,你想成爲某些文檔匹配濾波器A和匹配濾波器B或C.

如果是這樣的話您可以使用下面的篩選器查詢

fq=(A:a_value AND (B:b_value OR C:c_value)) 

確保您和的和OR的予以資本化。

0

如果B和C是可選的,那麼您爲什麼使用FQ?

FQ(過濾器查詢)在實際過濾時非常有用,您需要記住它不會計入分數中。

那麼1.你居然想在Q中使用它(這種方式,當文檔匹配B/C它會在得分反映) 2,如果B/C不應該影響成績,你爲什麼把它在所有?

在案例1次中的查詢可能看起來像:

(A:a_value AND ((B:b_value OR -B:b_value) OR (C:c_value OR -C:c_value))) 

您可能需要調整* -B:b_value *因爲我不是100%肯定

相關問題