2012-10-18 164 views
1

我想搜索帶搜索的短語:搜索並突出顯示該短語(而不是單個單詞)。例如,如果我在尋找搜索:搜索(「租賃珊瑚」),那麼下面的輸出來了: -短語搜索和高亮搜索:在Marklogic中搜索

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

可另行租賃凸顯和珊瑚。但我希望它能像一句話一樣突出「租賃珊瑚」。有什麼辦法可以得到這個結果。

回答

2

答案是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> 

這兩個詞查詢詞的和。現在試試這個:

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> 

這是一個簡單的單詞查詢術語 - 但文本是一個短語,這是你想要的。請注意嵌套的引號。