Search 如何按名称使用MarkLogic搜索选项

Search 如何按名称使用MarkLogic搜索选项,search,marklogic,options,Search,Marklogic,Options,我正在使用ML9JavaAPI将一个搜索选项文件上传到DB,该文件的名称可以在以后的搜索调用中使用。现在我想编写一个xquery转换来突出显示响应中一组元素中的查询匹配。标准代码片段对我来说不起作用,因为它们只返回有匹配项的字段,而且可能不会返回完整的字段值,而只返回匹配项的直接上下文 因此,我想在自定义转换中使用cts:highlight函数,并希望将我上传到数据库中的选项的名称传递给它。我的问题是如何最好地使用传递给transform方法的名称从DB中获取options元素。我想用它来构造c

我正在使用ML9JavaAPI将一个搜索选项文件上传到DB,该文件的名称可以在以后的搜索调用中使用。现在我想编写一个xquery转换来突出显示响应中一组元素中的查询匹配。标准代码片段对我来说不起作用,因为它们只返回有匹配项的字段,而且可能不会返回完整的字段值,而只返回匹配项的直接上下文

因此,我想在自定义转换中使用cts:highlight函数,并希望将我上传到数据库中的选项的名称传递给它。我的问题是如何最好地使用传递给transform方法的名称从DB中获取options元素。我想用它来构造cts:query,我可以将其传递到cts:highlight调用,如中所示:

let $query := cts:query(search:parse($query-string, $options))
let $result := cts:highlight($doc, $query, <markup>{$cts:text}
 </markup>)
let$query:=cts:query(搜索:解析($query string,$options))
让$result:=cts:highlight($doc,$query,{$cts:text}
)

我想我可以传入查询字符串和预加载选项的名称,并使用它们来构造cts:query,但不知道如何从名称中获取选项。

这些选项存储在与REST实例关联的模块数据库中。从理论上讲,您可以将它们挖掘出来,不过这需要依赖于实现细节(URI)

正如Sam所提到的,您可能会研究提取文档数据的组合,再加上搜索结果转换,而不是通过我猜想的读取转换来进行自己的搜索


另一种选择可能是自定义代码段,您可以通过转换结果将其拉入选项中。请参阅。

我找到了一种避免阅读选项的方法。将选项“return query”设置为true会将search:query节点添加到search:response,search:response作为文档节点传递给transform方法。然后,我可以在转换方法中直接获得这一点,以便在cts中使用:highlight as:
让$query:=cts:query($response/search:response/search:query/*[1])

您查看过提取文档数据吗?为您维护的工作量和代码可能会更少。我有,但是如何突出显示提取字段中的搜索匹配?我似乎找不到一个xquery转换是如何编写的示例。示例代码还仅显示了如何进行XSLT转换。这里有XQuery、JavaScript和XSLT转换示例:。我尝试做的是结合提取文档数据和snippettng的搜索结果转换。代码片段只会返回具有匹配项的字段,而摘录不会突出显示。我不确定如何在不使用cts:highlight的情况下在匹配的文档上使用我用来获取结果的cts:query和选项来完成我想做的事情。此外,我在您提到的链接上找不到URL。以下是正确的链接:。自定义代码段可能比提取查询和转换文档更有效。