나는 다음 두 XML 파일이 : 나는 요소의 범위를 만든MarkLogic : 잘못된 총 수
<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>
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 "elementNode"에 대한 색인을 만들고 "page"요소를 조각 루트로 정의했습니다. 은 "총"search:response
의 속성이 "3 당신이 여기에서 볼 수 있듯이 이제
<?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("/content/C/Documents and Settings/vimleshm/Desktop/abc.xml")" score="22784" confidence="0.451657" fitness="0.663945">
<search:snippet>
<search:match path="fn:doc("/content/C/Documents and Settings/vimleshm/Desktop/abc.xml")/*:pages/*:page[1]">
<search:highlight>text1</search:highlight>
</search:match>
<search:match path="fn:doc("/content/C/Documents and Settings/vimleshm/Desktop/abc.xml")/*: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("/content/C/Documents and Settings/vimleshm/Desktop/abc1.xml")" score="22784" confidence="0.451657" fitness="0.663945">
<search:snippet>
<search:match path="fn:doc("/content/C/Documents and Settings/vimleshm/Desktop/abc1.xml")/*: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>
: 나는 다음과 같은 응답을 얻었다 쿼리를 실행 한 후 검색 텍스트"텍스트 1 "
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
다음과 같은 XQuery를 실행 "여기서 나는 페이지를 조각 루트로 정의했기 때문에 [Marklogic Wrong count and Facet result Xquery. 여기에 "text1"이 Page1.xml과 Page2.xml에만 있기 때문에 "2"가 될 올바른 총 수를 얻을 수있는 방법이 있습니까? 또한, 앞의 경우와 같이 두 개의 XML 파일에 존재하므로 "2"가되어야하는 count "3"이있는 패싯 "data2"가 있습니다. 이것 좀 도와주세요.
실제로 전체 문서 또는 개별 페이지에서 검색 할 수 있으므로 사용자 쿼리에 따라 결과가 반환되어야합니다. 따라서 전체 문서 수 결과에서 검색 할 사용자의 선택이 "2"이어야합니다. · 제안하십시오. – user1660340
@ user1660340 몇 가지 옵션이 있습니다. 1)''을 조각 내고 사용자 입력에 따라 옵션 노드를 바꿀 수 있습니다 :' // pages searchable-expression>'. 그러나이 숫자는 많은 영향을받을 수 있습니다. 조각 만 정확하게 계산됩니다. 2) ''과 ''모두를 조각 낼 수 있지만 조상/자손 관계가있는 요소를 조각화하면 응용 프로그램에 다른 문제가 발생할 수 있습니다. 3) 내용을 복제하여 ''요소를 문서로 분리합니다. 이것은 항상 정확합니다. –
wst
제안 된 솔루션 (1)을 시도했지만 2 xml 파일에만 동일한 일치 항목이 있기 때문에 카운트가 "2"인 동안 총 카운트 "3"[프래그먼트 카운트]를 제공합니다. – user1660340