1

search:search でフレーズを検索し、そのフレーズ (個々の単語ではない) を強調表示したい。たとえば、search:search("lease coral") を検索している場合、次の出力が表示されます。

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

リースとサンゴを別々にハイライトしています。でも、「Lease Coral」を一つのフレーズのようにまとめて強調したいのです。この結果を得る方法はありますか。

4

1 に答える 1

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>

これは、2 つの単語クエリ用語の 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>

これは単純な単語クエリ用語ですが、テキストはフレーズであり、これが必要です。ネストされた引用符に注意してください。

于 2012-10-18T16:21:14.783 に答える