Marklogic搜索是否有可能跨文檔搜索,但只使用數組元素中的特定屬性進行搜索?此外,結果可能只包含匹配的數組元素而不包含整個文檔(因爲同一文檔中的其他數組元素可能不匹配)。內部數組或對象,並僅返回匹配數組項(JavaScript)的
實施例:給定一個JSON Marklogic文檔 { "name": "aName", "children": [{ "name": "A", "target": { "min": 2, "max": 10 } },{ "name": "B", "target": { "min": 22, "max": 32 } },{ "name": "C", "target": { "min": 4, "max": 7 } }] }
我僅想匹配children
其中target.min
< 5和target.max
> 5.
在這種情況下,只有children[0]
和children[2]
將匹配。然後如何指定查詢以僅返回: [ { "name": "A", "target": { "min": 2, "max": 10 } }, { "name": "C", "target": { "min": 4, "max": 7 } } ]
如何構造相關查詢。注:我更喜歡服務器端JavaScript或Node.js實現。
謝謝@kcoleman。我正在尋找地圖/縮小 - 這可能是我現在最好的。 我必須說,這感覺效率相當低。我可以指定類似'cts.pathRangeQuery(「children [*] .target.min」,「<」,5)',並將其用作jsearch查詢的一部分。然後我必須在map/reduce函數內執行類似的檢查。將是很好,如果我能範圍我的查詢只對一定水平(如http://docs.marklogic.com/guide/search-dev/structured-query#id_87231)返回結果 – Kholofelo
有趣的是我可以用'。 map {{snippet:true})'來準確地找到文檔中匹配發生的位置,然後再次運行其他查詢來獲取匹配文檔的這些部分。 – Kholofelo
我對你認爲你可以用結構化查詢做什麼感到困惑,你不能用這些其他接口來做。結構化查詢在cts:query之上完全沒有,只是語法糖。所有搜索界面的目標是查找與您的查詢匹配的文檔,並且我們爲您提供一些鉤子來根據需要轉換匹配項,以及一些默認選項,如snippeting。 – kcoleman