【问题标题】:Phrase search and highlighting with search:search in Marklogic短语搜索和使用搜索突出显示:Marklogic 中的搜索
【发布时间】:2012-10-18 14:21:12
【问题描述】:

我想使用 search:search 搜索一个短语并突出显示该短语(不是单个单词)。例如,如果我正在搜索 search:search("leasecoral") 那么以下输出将出现:-

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

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

【问题讨论】:

    标签: xquery marklogic


    【解决方案1】:

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

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

    您可以使用 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>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 2012-06-25
      相关资源
      最近更新 更多