我的记录看起来像这样:
<?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("/person/10025613.xml")/person/company"><search:highlight>AbbVie</search:highlight> Inc. (Parent)
</search:match>
<search:match path="fn:doc("/person/10025613.xml")/person/displayName">Tj <search:highlight>Tang</search:highlight></search:match>
<search:match path="fn:doc("/person/10025613.xml")/person/firstName">
<search:highlight>TJ</search:highlight>
</search:match>
<search:match path="fn:doc("/person/10025613.xml")/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("/person/10025613.xml")/person">
<search:highlight>10025613</search:highlight>
</search:match>
</search:snippet>
在这种情况下,我甚至没有获得上下文的低级元素。如何在片段中确定元素路径?我试图为upi值添加元素范围索引,但结果仍然相同。
答案 0 :(得分:1)
Search API处理匹配是嵌入式内联元素的整个内容的情况,如:
<p>Before the <b>match</b> and after</p>
在这种情况下,搜索API会使用内联元素之前和之后的文本作为代码段(而不是为匹配项提供任何代码段)。
为了正确处理这种情况,Search API必须将其与匹配结构中叶元素的整个内容的情况区分开来。
上面的upi元素是叶元素的一个例子。
Search API可能在8.0-5之前出现了一个错误,它混淆了嵌入式内联案例的叶元素情况。
希望澄清,