分析的查询在ML9中不包含qtextpre



我继承了去年从ML7移植到ML9的代码,搜索页面的facet窗格不像在遗留系统中那样显示facet clear控件。用于构建控件的XQuery逻辑取决于包含@qtextpre属性的search:parse()的结果。在较旧的系统中,解析的查询是:

<cts:element-range-query qtextpre="Status:" qtextref="cts:annotation" operator="=" xmlns:cts="http://marklogic.com/cts" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<cts:element xmlns:_1="http://www.marklogic.com/ps/ns/qanda/">_1:Status</cts:element>
<cts:annotation qtextref="following-sibling::cts:value"></cts:annotation>
<cts:value xsi:type="xs:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Review</cts:value>
<cts:option>collation=http://marklogic.com/collation/codepoint</cts:option>
</cts:element-range-query>

但在新系统中,具有相同选项的相同查询文本解析为:

<cts:element-range-query operator="=" xmlns:cts="http://marklogic.com/cts">
<cts:element xmlns:_1="http://www.marklogic.com/ps/ns/qanda/">_1:Status</cts:element>
<cts:value xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Review</cts:value>
<cts:option>collation=http://marklogic.com/collation/codepoint</cts:option>
</cts:element-range-query>

我不太清楚该属性的用途,但此应用程序代码取决于在查询中找到@qtextpre属性,以决定是否在facet窗格中显示facet clear控件。有人能解释为什么ML9版本的解析查询中没有它吗?

有关search:parse()函数的用法,请参阅Marklogic版本的文档。

我不知道为什么——你问的实际问题,但我可以回答这个问题:最新的两个版本有什么不同。听起来会更有帮助。。。

在文档的第9版中,有一个选项可以获得cts:annotated-query格式和cts:query格式的输出。默认值似乎没有那么冗长。根据注释,这是不推荐使用的,但在9的最新版本中可用。由于MarkLogic9的搜索有很多变化,我不确定哪一个发布点的内容可能发生了变化。然而,我相信cts:annotated-query选项会给出您想要的结果。

https://docs.marklogic.com/9.0/search:parse

cts:annotated query:等效于schema元素(cts:query(产生的输出,但添加了注释。此表格已弃用,并将在以后的版本中删除。

search:parse($qText, $options, "cts:annotated-query")

请注意,MarkLogic 10的文档还列出了您需要的不推荐使用的选项。因此,当您从9个选项删除到10个选项时,请注意是否需要对您的功能进行代码更改。

最新更新