我是MarkLogic的新手,我們正在評估MarkLogic的產品用例。使用MarkLogic(XQuery或同等方法)進行AND OR查詢
我們評估了一些NoSQL數據庫MongoDB的一樣,Couchbase等
我要尋找一個下面類型的查詢搜索。
(條件1或條件2)AND(Condition3 OR Condition4)AND(Condition5)
可以MarkLogic提供這種類型的搜索查詢的?
我剛開始學習MarkLogic並試圖理解架構。
謝謝,薩米爾
我是MarkLogic的新手,我們正在評估MarkLogic的產品用例。使用MarkLogic(XQuery或同等方法)進行AND OR查詢
我們評估了一些NoSQL數據庫MongoDB的一樣,Couchbase等
我要尋找一個下面類型的查詢搜索。
(條件1或條件2)AND(Condition3 OR Condition4)AND(Condition5)
可以MarkLogic提供這種類型的搜索查詢的?
我剛開始學習MarkLogic並試圖理解架構。
謝謝,薩米爾
是,MarkLogic提供這種類型的功能一些高級別庫。看看搜索API。
從這裏開始:https://developer.marklogic.com/learn/2009-07-search-api-walkthrough
,更徹底的文檔是在這裏:https://docs.marklogic.com/guide/search-dev/search-api
簡短的回答原來的問題是「是」。 「如何」的細節將取決於用於表達查詢的方法。
的reference architecture建議使用Java或Node.js Client APIs如果你使用其中的一個三層的方法,或者如果你使用你的中間層不同的語言HTTP調用到REST API。
如果您在MarkLogic的應用程序服務器(通常是兩層體系結構)中工作,也可以使用Search API(如wst所述)。您可以使用XQuery或服務器端JavaScript(如MarkLogic 8)執行此操作。
MarkLogic可以使用許多方式處理這種邏輯,如前所述。
例如,你這是怎麼可能設置使用CTS庫(我強烈建議CTS庫,因爲它使用索引好多了,他們的建築是如此靈活得多)搜索查詢:
cts:search(//elementName,
cts:and-query((
cts:element-attribute-value-query(xs:QName("entry"), xs:QName("private"), "true"),
cts:or-query((
cts:element-attribute-value-query(xs:QName("entry"), xs:QName("forced"), "false"),
cts:element-attribute-value-query(xs:QName("entry"), xs:QName("forced"), "pending")
))
))
)
這段代碼顯示AND和OR邏輯。 cts:and-query()和cts:or-query()函數可以獲取節點列表。上面的查詢說:「查找具有private ='true'屬性的元素(稱爲elementName)並且具有以下任一項:forced ='true'或forced ='pending'」。
對於更簡單的數據,你可以通過做一些像使用XQuery謂詞如下:
for $node in $xml/parent/child[@param1 eq "test" AND @param2 eq "OK"]/grandchild[@service eq "yahoo" or @service eq "google"]
return $node
並根據什麼條件1至Condition5實際上是,高層次的圖書館可能是不必要的,因爲XQuery的本身提供布爾運營商。 – 2015-03-30 21:01:22