搜索:搜索和搜索:代码段匹配路径

时间:2016-05-02 02:34:44

标签: marklogic marklogic-8

我的记录看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<person>
   <account>
      <domain>ABBVIENET</domain>
      <username>TANGTJ</username>
      <status>ENABLED</status>
   </account>
   <company>AbbVie Inc. (Parent)</company>
   <displayName>Tj Tang</displayName>
   <upi>10025613</upi>
   <firstName>
      <preferred>TJ</preferred>
      <given>Tze-John</given>
   </firstName>
   <middleName/>
   <lastName>
      <preferred>Tang</preferred>
      <given>Tang</given>
   </lastName>
   <secondaryLastName/>
   <address>
      <streetAddress>1 N Waukegan Road</streetAddress>
      <buildingCode>AP52</buildingCode>
      <city>North Chicago</city>
      <state>Illinois</state>
      <country>
         <code>US</code>
         <name>United States</name>
      </country>
   </address>
   <emailAddress>tze-john.tang@abbvie.com</emailAddress>
   <title>Principal Research Scientist</title>
   <managerUpi>10009618</managerUpi>
</person>

我使用时搜索:

search:search("Tang TJ AbbVie")

我明白了:

<search:snippet>
  <search:match path="fn:doc(&quot;/person/10025613.xml&quot;)/person/company"><search:highlight>AbbVie</search:highlight> Inc. (Parent)
  </search:match>
  <search:match path="fn:doc(&quot;/person/10025613.xml&quot;)/person/displayName">Tj <search:highlight>Tang</search:highlight></search:match>
    <search:match path="fn:doc(&quot;/person/10025613.xml&quot;)/person/firstName">
      <search:highlight>TJ</search:highlight>
  </search:match>
  <search:match path="fn:doc(&quot;/person/10025613.xml&quot;)/person/lastName">
      <search:highlight>Tang</search:highlight>
  </search:match>
</search:snippet>

它显示匹配所在的元素,即匹配在/ person / firstName / preferred中,并显示/ person / firstName。

如果我搜索upi值:

search:search("10025613")

我明白了:

<search:snippet>
    <search:match path="fn:doc(&quot;/person/10025613.xml&quot;)/person">
      <search:highlight>10025613</search:highlight>
    </search:match>
</search:snippet>

在这种情况下,我甚至没有获得上下文的低级元素。如何在片段中确定元素路径?我试图为upi值添加元素范围索引,但结果仍然相同。

1 个答案:

答案 0 :(得分:1)

Search API处理匹配是嵌入式内联元素的整个内容的情况,如:

<p>Before the <b>match</b> and after</p>

在这种情况下,搜索API会使用内联元素之前和之后的文本作为代码段(而不是为匹配项提供任何代码段)。

为了正确处理这种情况,Search API必须将其与匹配结构中叶元素的整个内容的情况区分开来。

上面的upi元素是叶元素的一个例子。

Search API可能在8.0-5之前出现了一个错误,它混淆了嵌入式内联案例的叶元素情况。

希望澄清,