我正在尝试使用REST API搜索某些内容并突出显示MarkLogic中XML内容(如google)中的搜索字符串.问题是当我在搜索字符串中包含"ME"时,它会在内容中突出显示"i"标记(html斜体标记)和"Me".我创建了一个包含一些元素的文档,并在文档上运行了单词查询.例如XML内容:
some data from me more data from somewhere by me
我创建了一个文档,其中包含根节点"resources"和子元素"title"和"desc",并使用word-query搜索文档中的搜索字符串.
现在,当我搜索"some me"时,它会检索内容
<some data from <me more data <i> from <i> somewhere by me
网址:
localhost:9000/v1/search?q=some me&collection=Data&start=0&pageLength=10&options=Transformation&format=json
我正在使用cts:突出显示突出显示,有些事情如下:
cts:highlight($final-result, $query, fn:concat('',$cts:text,'')), $custom-config)
关于为什么html元素在这里被突出显示的任何想法?提前致谢.
您可能以文本格式插入文档,而不是xml格式.我可以通过以文本格式插入来重现您的问题:
xdmp:document-insert("test.xml", text {""}) some data from me more data from somewhere by me
然后运行cts:突出显示该文档:
cts:highlight(doc("test.xml"), cts:parse("some me"), concat('', $cts:text, ''))
但是如果我以XML格式重新插入文档:
xdmp:document-insert("test.xml",) some data from me more data from somewhere by me
然后相同的cts:亮点效果更好:
<span class="highlight">some</span> data from <span class="highlight">me</span> more data from somewhere by <span class="highlight">me</span>
如果我添加来自@ehennum和@mholstege的建议,而是运行此cts:highlight:
cts:highlight(doc("test.xml"), cts:parse("some me"), {$cts:text})
然后我得到了我猜你想要的东西:
some data from me more data from somewhere by me