短语搜索和搜索突出显示:在Marklogic中搜索

时间:2012-10-18 14:21:13

标签: xquery marklogic

我想搜索带搜索的短语:搜索并突出显示该短语(不是单个单词)。例如,如果我正在搜索搜索:搜索(“租赁珊瑚”),那么以下输出即将到来: -

<search:match path="fn:doc("abc.xml")/*:text>testing <search:highlight>Lease</search:highlight><search:highlight>CORAL</search:highlight></search:match>

分别突出租约和珊瑚。但我希望它像一个短语一样突出“Lease Coral”。有没有办法得到这个结果。

1 个答案:

答案 0 :(得分:2)

答案是http://docs.marklogic.com/guide/search-dev/search-api#id_44520

  

“任何短语”双引号内的任何内容都被视为短语。该示例匹配具有短语“any phrase”(没有双引号)的文档。

您可以使用search:parse

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

search:parse('high time')
=>
<cts:and-query strength="20" qtextjoin="" qtextgroup="( )" xmlns:cts="http://marklogic.com/cts">
  <cts:word-query qtextref="cts:text">
    <cts:text>high</cts:text>
  </cts:word-query>
  <cts:word-query qtextref="cts:text">
    <cts:text>time</cts:text>
  </cts:word-query>
</cts:and-query>

这是两个单词查询术语的AND。现在试试这个:

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

search:parse('"high time"')
=>
<cts:word-query qtextpre="&quot;" qtextref="cts:text" qtextpost="&quot;" xmlns:cts="http://marklogic.com/cts">
  <cts:text>high time</cts:text>
</cts:word-query>

这是一个简单的单词查询术语 - 但文本是一个短语,这是你想要的。请注意嵌套引号。