2011-06-01 87 views
0

我一直在嘗試在lucene中運行以下布爾查詢,但它似乎失敗。請幫忙。在Lucene中布爾搜索

(a或b)和c - >工作正常

(a和b)或c - >給出了A和B或C的結果。所以一個必須和b和c變得應該,而搜索結果是錯誤的。它應該像a一樣工作,b必須可用或c可用。

又如:

如果你搜索「(A和B)」,它將返回X結果

如果你搜索「C」,它將返回是導致

如果您搜索對於「(a和b)或c」,結果數量不能小於x或y中的較大值。但是這沒有發生。請幫助我該如何着手實施?

+0

做一個b和c是你正在尋找的實際值? – PVR 2016-06-19 16:55:29

回答

0

(a AND b)或c被轉換爲(+a +b) c。你想要的是沒有括號:+a +b c

從邏輯的角度來看,「A和B必須出現,C可能出現」相當於「A和B必須出現」。 (在古典邏輯中,沒有辦法說「可能是真的」)。因此,用布爾量表示(+a +b) c會有困難。你可以做的一種方法是「(a AND b AND c)或(a AND b)」。

+0

感謝您的回覆Xodarap。然而,我的理解是,所有的文檔都有任何一個<"a AND b">或<"c">,它們都應該出現在這個布爾搜索結果中,這是不會發生的。 因此,從邏輯的角度來看,如果A和B出現或在文檔中只有C出現在文檔中,則所有這些文檔都應該返回到結果集中。 – ranjit 2011-06-02 08:13:59

+0

@ranjit:你有沒有試過像(+ a + b)c'這樣做?這至少會縮小問題所在。我認爲在一些查詢解析器中,OR需要大寫,這不在你的例子中 - 所以這可能就是它。 – Xodarap 2011-06-02 13:05:04