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

希望对您有所帮助,