2017-11-20 11 views
0

안녕하세요 저는 NodeJS와 함께 MarkLogic 9를 사용하여 Querying을 처음 사용하고 MarkLogic 9 (https://docs.marklogic.com/guide/search-dev/qbe)의 예에서 언급 한 것처럼 QBE (Query By Example)를 사용하려고합니다. 다음 진술을 사용하는 xquery :MarkLogic Query By Example가 잘못된 결과를 반환합니다.

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> 

그러면 올바른 결과를 반환합니다. 내가와 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' 
})) 

가 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 클라이언트 페이지에서

에릭

답변

2

검색 요청. 기본 페이지 길이는 10 개입니다.

더 많은 결과를 얻으려면 슬라이스 방법을 사용하여 길이를 지정하십시오.

qb.where(qb.byExample(...)) 
    .slice(0, Number.MAX_SAFE_INTEGER) 
    .withOptions({search: ['filtered']}) 

경고 : : 큰 결과 세트에 대한 실용적인 접근 대신 한 번에 모든 결과를 얻으려고 노력의 페이지로 모든 결과를 얻으려면, 당신은 자바 스크립트 MAX_SAFE_INTEGER 상수를 사용할 수 있습니다.

자세한 내용은 다음을 참조하십시오

http://docs.marklogic.com/jsdoc/queryBuilder.html#slice

가 도움이 희망,

+0

또한보십시오 http://docs.marklogic.com/guide/node-dev/search#id_56954는, 이는 포함 페이지 매김을 사용하는 방법에 대한 몇 가지 간단한 예입니다. – kcoleman