今のところ、このコードを使用して、MarkLogic 検索から取得した JSON ドキュメントに基づいてスニペットを生成しています。
xquery version "1.0-ml";
module namespace searchlib="http://ihs.com/lib/searchlib";
import module namespace search="http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";
import module namespace json="http://marklogic.com/xdmp/json" at "/MarkLogic/json/json.xqy";
declare function searchlib:get-snippet($docc,$words) {
let $doc:= json:transform-from-json($docc)
let $squery := search:parse($words)
let $result := <result>{search:snippet($doc,$squery,
<transform-results apply="snippet" xmlns="http://marklogic.com/appservices/search">
<max-snippet-chars>255</max-snippet-chars>
</transform-results>)}</result>
return $result//search:match
};
私が使用している検索を実行するとき:
cts.jsonPropertyValueQuery(fieldname, values,
['case-insensitive', 'diacritic-insensitive'])
そのため、検索は発音記号を区別せずに機能し、良い結果が得られますが、 のようにオプションsearch:snippet
を渡すことができません。diacritic-insensitive
cts.jsonPropertyValueQuery
ドキュメントでは、説明でこれを見ることができます
検索文法を定義し、検索を制御するオプション。関数 search:search の $options の説明を参照してください。search:snippet; では、transform-results オプションに apply 属性を指定できないことに注意してください。別のスニペット関数を使用するには、代わりに search:search または search:resolve を使用してください。
しかし、ここでは次のとおりです。
search:snippet(
$result as node(),
$cts-query as schema-element(cts:query),
[$options as element(search:transform-results)?]
) as element(search:snippet)
では、他のオプションを search:snippet に渡せないということですか? または、これを行うオプションはありますか?
私はそれを使用してテストしてchávez
おり、結果を生成していますが、スニペットは、そのドキュメントを意味する完全一致を含むドキュメントに対してのみ適切に生成されます
チャベスは何かをした
強調表示されずChavez
、
チャベスは何かをした
ハイライトになります
前もって感謝します!