0

次の 2 つの XML ファイルがあります。

Page1.xml

<pages xmlns="http://marklogic.com/docs">
  <page>
    <elementNode>data1</elementNode>
    <textNode>text1</textNode>
  </page>
  <page>
    <elementNode>data1</elementNode>
    <textNode>text1</textNode>
  </page>
  <page>
    <elementNode>data3</elementNode>
    <textNode>text3</textNode>
  </page>
  <page>
    <elementNode>data4</elementNode>
    <textNode>text4</textNode>
  </page>
<pages>

Page2.xml

<pages xmlns="http://marklogic.com/docs">
  <page>
    <elementNode>data1</elementNode>
    <textNode>text1</textNode>
  </page>
  <page>
    <elementNode>data2</elementNode>
    <textNode>text3</textNode>
  </page>
  <page>
    <elementNode>data3</elementNode>
    <textNode>text5</textNode>
  </page>
  <page>
    <elementNode>data4</elementNode>
    <textNode>text6</textNode>
  </page>
<pages>

「elementNode」に要素範囲インデックスを作成し、「page」要素をフラグメント ルートとして定義しました。次の xquery を searchText "text1" で実行しました

xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
declare namespace ts= "http://marklogic.com/docs";

import module namespace search ="http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";

declare variable $options :=  
  <options xmlns="http://marklogic.com/appservices/search">
    <grammar>
      <starter strength="30" apply="grouping" delimiter=")">(</starter>
      <starter strength="40" apply="prefix" element="cts:not-query">NOT</starter>
      <joiner strength="10" apply="infix" element="cts:or-query" tokenize="word">OR</joiner>
      <joiner strength="20" apply="infix" element="cts:and-query" tokenize="word">AND</joiner>
      <joiner strength="50" apply="constraint">:</joiner>
    </grammar>
    <constraint name="elementNode">
      <range collation="http://marklogic.com/collation/" type="xs:string">
        <facet-option>limit=1000</facet-option>
        <element ns="http://marklogic.com/docs" name="elementNode"/>
      </range>
    </constraint>
  </options>;
let $searchResult := search:search("text1", $options)
return $searchResult

クエリを実行した後、次の応答が得られました。

<?xml version="1.0" encoding="UTF-8"?>
<search:response total="3" start="1" page-length="10" xmlns="" xmlns:search="http://marklogic.com/appservices/search">
  <search:result index="1" uri="/content/C/Documents and Settings/vimleshm/Desktop/abc.xml" path="fn:doc(&quot;/content/C/Documents and Settings/vimleshm/Desktop/abc.xml&quot;)" score="22784" confidence="0.451657" fitness="0.663945">
    <search:snippet>
      <search:match path="fn:doc(&quot;/content/C/Documents and Settings/vimleshm/Desktop/abc.xml&quot;)/*:pages/*:page[1]">
        <search:highlight>text1</search:highlight>
      </search:match>
      <search:match path="fn:doc(&quot;/content/C/Documents and Settings/vimleshm/Desktop/abc.xml&quot;)/*:pages/*:page[2]">
        <search:highlight>text1</search:highlight>
      </search:match>
    </search:snippet>
  </search:result>
  <search:result index="2" uri="/content/C/Documents and Settings/vimleshm/Desktop/abc1.xml" path="fn:doc(&quot;/content/C/Documents and Settings/vimleshm/Desktop/abc1.xml&quot;)" score="22784" confidence="0.451657" fitness="0.663945">
    <search:snippet>
      <search:match path="fn:doc(&quot;/content/C/Documents and Settings/vimleshm/Desktop/abc1.xml&quot;)/*:pages/*:page[1]">
        <search:highlight>text1</search:highlight>
      </search:match>
    </search:snippet>
  </search:result>
  <search:facet name="elementNode">
    <search:facet-value name="data1" count="3">data1</search:facet-value>
  </search:facet>
  <search:qtext>text1</search:qtext>
  <search:metrics>
    <search:query-resolution-time>PT0S</search:query-resolution-time>
    <search:facet-resolution-time>PT0.015S</search:facet-resolution-time>
    <search:snippet-resolution-time>PT0S</search:snippet-resolution-time>
    <search:total-time>PT0.015S</search:total-time>
  </search:metrics>
</search:response>

ここでわかるように、search:response「ページ」をフラグメント ルート [ Marklogic Wrong count and Facet result Xquery . "text1" は Page1.xml と Page2.xml にのみ存在するため、ここでは "2" になる正しい合計数を取得する方法はありますか? また、カウント「3」のファセット「data2」を取得しました。これは、前のケースと同様に 2 つの XML ファイルに存在するため、「2」である必要があります。これについて私を助けてください。

4

1 に答える 1