MarkLogic 查询示例 returns 不正确的结果
MarkLogic Query By Example returns incorrect result
你好,我是 MarkLogic 9 结合 NodeJS 查询的新手,并尝试使用 MarkLogic 9 示例中提到的 QBE(按示例查询)(https://docs.marklogic.com/guide/search-dev/qbe)当我使用 xquery 时使用以下语句:
xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
let $items := fn:collection()/scope/item
for $i in $items
let $sscc := $i/*:transaction/*:sscc/text()
let $type:= $i/*:transaction/*:type/text()
let $actorId := $i/*:transaction/*:actorId/text()
let $device := $i/*:transaction/*:device/text()
let $ordernummer := $i/*:order/*:orderNumber/text()
where $ordernummer = 3788888
return <td>{$sscc}</td>
其中 returns 46 个正确的结果。当我尝试使用 QBE 执行此操作时:
exports.postQuery = function(req, res) {
var queryInput = req.body.message
console.info('Start postQuery!!!')
console.info(queryInput)
db.documents.query(
//qb.where(qb.byExample(
// queryInput
qb.byExample({
$query: {
orderNumber: {$word : '3788888'},
$filtered: true
},
$format: 'json'
}))
它 returns 10 个结果而不是 46 个。不管我使用哪个订单号,所有可能性都显示 10 条记录。你能告诉我我做错了什么吗?
MarkLogic 中的源 xml 文件格式如下:
<scope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<item>
<transaction>
<type>CI</type>
<sscc>00000379471900000025</sscc>
<location>4260210630688</location>
<device>VISTALINK.004</device>
<date>2017-04-25</date>
<time>02:15:33</time>
<gmtOffset>+02:00</gmtOffset>
<actorId>155081</actorId>
</transaction>
<order>
<orderNumber>3794719</orderNumber>
</order>
<load>
<rti>
<ean>8714548186004</ean>
<grai>8003087145481860040019877322</grai>
<column>2</column>
<size>
<width>1900</width>
<height>95</height>
<depth>0</depth>
</size>
<position>
<x>2062,48707520218</x>
<y>2015,24337520512</y>
<z>0</z>
</position>
</rti>
<rti>
<ean>8714548106002</ean>
<grai>8003087145481060020016434653</grai>
<column>0</column>
<size>
<width>1900</width>
<height>95</height>
<depth>0</depth>
</size>
<position/>
</rti>
<rti>
<ean>8714548186004</ean>
<grai>8003087145481860040012803719</grai>
<column>2</column>
<size>
<width>1900</width>
<height>95</height>
<depth>0</depth>
</size>
<position>
<x>2064,20629390666</x>
<y>2124,57539157396</y>
<z>0</z>
</position>
</rti>
<rti>...</rti>
<rti>...</rti>
<rti>...</rti>
<rti>...</rti>
<rti>...</rti>
</load>
</item>
</scope>
曼尼谢谢
埃里克
在结果列表的 MarkLogic 客户端页面中搜索请求。默认页面长度为 10 个结果。
要获得更多结果,请使用切片方法指定长度。要获得所有结果,您可以使用 JavaScript MAX_SAFE_INTEGER 常量:
qb.where(qb.byExample(...))
.slice(0, Number.MAX_SAFE_INTEGER)
.withOptions({search: ['filtered']})
警告:对于大型结果集,实用的方法是分页而不是尝试一次获取所有结果。
有关详细信息,请参阅:
http://docs.marklogic.com/jsdoc/queryBuilder.html#slice
希望对您有所帮助,
你好,我是 MarkLogic 9 结合 NodeJS 查询的新手,并尝试使用 MarkLogic 9 示例中提到的 QBE(按示例查询)(https://docs.marklogic.com/guide/search-dev/qbe)当我使用 xquery 时使用以下语句:
xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
let $items := fn:collection()/scope/item
for $i in $items
let $sscc := $i/*:transaction/*:sscc/text()
let $type:= $i/*:transaction/*:type/text()
let $actorId := $i/*:transaction/*:actorId/text()
let $device := $i/*:transaction/*:device/text()
let $ordernummer := $i/*:order/*:orderNumber/text()
where $ordernummer = 3788888
return <td>{$sscc}</td>
其中 returns 46 个正确的结果。当我尝试使用 QBE 执行此操作时:
exports.postQuery = function(req, res) {
var queryInput = req.body.message
console.info('Start postQuery!!!')
console.info(queryInput)
db.documents.query(
//qb.where(qb.byExample(
// queryInput
qb.byExample({
$query: {
orderNumber: {$word : '3788888'},
$filtered: true
},
$format: 'json'
}))
它 returns 10 个结果而不是 46 个。不管我使用哪个订单号,所有可能性都显示 10 条记录。你能告诉我我做错了什么吗?
MarkLogic 中的源 xml 文件格式如下:
<scope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<item>
<transaction>
<type>CI</type>
<sscc>00000379471900000025</sscc>
<location>4260210630688</location>
<device>VISTALINK.004</device>
<date>2017-04-25</date>
<time>02:15:33</time>
<gmtOffset>+02:00</gmtOffset>
<actorId>155081</actorId>
</transaction>
<order>
<orderNumber>3794719</orderNumber>
</order>
<load>
<rti>
<ean>8714548186004</ean>
<grai>8003087145481860040019877322</grai>
<column>2</column>
<size>
<width>1900</width>
<height>95</height>
<depth>0</depth>
</size>
<position>
<x>2062,48707520218</x>
<y>2015,24337520512</y>
<z>0</z>
</position>
</rti>
<rti>
<ean>8714548106002</ean>
<grai>8003087145481060020016434653</grai>
<column>0</column>
<size>
<width>1900</width>
<height>95</height>
<depth>0</depth>
</size>
<position/>
</rti>
<rti>
<ean>8714548186004</ean>
<grai>8003087145481860040012803719</grai>
<column>2</column>
<size>
<width>1900</width>
<height>95</height>
<depth>0</depth>
</size>
<position>
<x>2064,20629390666</x>
<y>2124,57539157396</y>
<z>0</z>
</position>
</rti>
<rti>...</rti>
<rti>...</rti>
<rti>...</rti>
<rti>...</rti>
<rti>...</rti>
</load>
</item>
</scope>
曼尼谢谢
埃里克
在结果列表的 MarkLogic 客户端页面中搜索请求。默认页面长度为 10 个结果。
要获得更多结果,请使用切片方法指定长度。要获得所有结果,您可以使用 JavaScript MAX_SAFE_INTEGER 常量:
qb.where(qb.byExample(...))
.slice(0, Number.MAX_SAFE_INTEGER)
.withOptions({search: ['filtered']})
警告:对于大型结果集,实用的方法是分页而不是尝试一次获取所有结果。
有关详细信息,请参阅:
http://docs.marklogic.com/jsdoc/queryBuilder.html#slice
希望对您有所帮助,