任何人都可以用一個例子來解釋布爾查詢中lucene中的BooleanClause.Occur.Must和BooleanClause.Occur.SHOULD之間的區別嗎?Lucene中的BooleanClause.Occur.Must和BooleanClause.Occur.SHOULD之間的區別
回答
BooleanClause.Occur.SHOULD
表示該條款是可選的,而BooleanClause.Occur.Must
表示該條款是強制性的。
但是,如果布爾查詢只包含可選子句,則至少有一個子句必須匹配以使文檔出現在結果中。
在過去什麼證件匹配BooleanQuery更好的控制,也有minimumShouldMatch參數,它可以讓你告訴Lucene的,對於一個文檔出現在結果中至少minimumShouldMatch
BooleanClause.Occur.SHOULD
條款必須匹配。
我會嘗試用一個例子來解釋:
讓我們假設有兩個條款:條款A和B.條現在BooleanClause.Occur的效果將是如下:
在第一種情況下,子句A和B都有BooleanClause.Occur.Should標誌設置。這意味着,即使其中一個條款得到滿足(A或B),該文件也會受到打擊。
在第二種情況下,子句A有BooleanClause.Occur.Must標誌設置,子句B有BooleanClause.Occur.Should標誌設置。
在這種情況下,當文檔「滿足」滿足條款A時,該文檔將成爲一個命中。該文檔是否滿足條款B對它不會產生影響。
但是,如果文件不滿足條款A,那麼無論它是否滿足條款B,它都不會被打。
在第三種情況下,子句A和子句B都設置了BooleanClause.Occur.Must標誌。
在這種情況下,一個文檔將是一個命中,只有當它將滿足「兩個」條款。如果它甚至不能滿足該條款中的一條,那麼它將不會受到影響。
SHOULD子句是lucene中最重要的功能,當你最關心的問題是排名!
當您使用SHOULD子句時,Lucene通過SHOULD子句點的總和對檢索到的文檔進行排名。因此,您可以將一些查詢與SHOULD子句一起加入不同的提升(根據它們的重要性)。這是Solr中ExtendedDismaxQuery的概念。
BooleanClause.Occur.Must
代表強制性條款。該條款應符合要返回的結果。基本上AND
。
BooleanClause.Occur.SHOULD
代表可選的條款,並會表現得像一個OR
- 1. Lucene OpenMode.CREATE_OR_APPEND和deleteDocuments之間的區別
- 2. OAK Lucene索引中indexNodeName和nodeName之間的區別
- 3. 索引和元搜索和lucene支持之間的區別
- 4. 之間的〜/和的區別../
- 5. 分面搜索和Lucene搜索之間的區別?
- 6. Lucene術語和查詢之間的區別?
- 7. '#','%'和'$'之間的區別
- 8. {!!之間的區別!!}和{{}}
- 9. '+ ='和'= +'之間的區別?
- 10. 「。+」和「。+?」之間的區別
- 11. .eq之間的區別。和==
- 12. #。/和#之間的區別。 ./
- 13. !=和!之間的區別==
- 14. 「%〜dp0」和「。\」之間的區別?
- 15. | =和^ = css之間的區別
- 16. 之間的區別。和#
- 17. ==和case之間的區別?
- 18. 「**/* /」和「** /」之間的區別?
- 19. jQuery - '。'之間的區別和「#」
- 20. 「?1」和「?」之間的區別
- 21. `%in%`和`==`之間的區別
- 22. fmod和%之間的區別
- 23. 之間的區別:+和:+
- 24. Lucene中兩個文件之間的區別
- 25. make中的「$(shell ...)」和「$$(...)」之間的區別
- 26. python中的[]和[,,]之間的區別
- 27. javascript中的/ * * /和//之間的區別
- 28. $之間的區別?和PowerShell中的$ LastExitCode
- 29. jQuery中的$和$()之間的區別
- 30. C中的/ +和+之間的區別?
根據[這lucene的文檔】(http://lucene.apache.org/core/3_5_0/api/core/org/apache/lucene /search/BooleanQuery.html#setMinimumNumberShouldMatch%28int%29)如果一個查詢只有可選子句,它仍然是可選的。 setMinimumNumberShouldMatch控制它,但默認情況下它將查詢視爲0使用。 – physicsmichael 2016-03-25 23:38:12