簡體   English   中英

解析后的查詢不包含 ML9 中的 qtextpre

[英]Parsed query contains no qtextpre in ML9

我繼承了去年從 ML7 移植到 ML9 的代碼,並且搜索頁面的分面窗格不像在舊系統中那樣顯示分面清晰控件。 構建控件的 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屬性來決定是否在構面窗格中顯示構面清除控件。 誰能解釋為什么它不存在於 ML9 版本的已解析查詢中?

有關search:parse() function 的用法,請參閱每個 Marklogic 版本的文檔。

我不知道為什么 - 你問的實際問題,但我可以回答這個問題:最新的 2 個版本有什么不同。 聽起來這會更有幫助......

在文檔的第 9 版中,有一個選項可以以所謂的cts:annotated-query格式以及cts:query格式獲取 output。 似乎默認值不那么冗長。 根據注釋,這已被棄用,但在 9 的最新版本中可用。由於 MarkLogic 9 有許多搜索更改,我不確定哪個版本可能發生了變化。 但是,我相信cts:annotated-query選項會給出您想要的結果。

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

cts:annotated-query:等同於 schema-element(cts:query) 生成的 output,但添加了注釋。 THIS FORM IS DEPRECATED 並將在未來的版本中刪除。

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

請注意,MarkLogic 10 的文檔還列出了您需要的已棄用選項。 因此,當您 go 從 9 到 10 個選項被刪除時,請注意是否需要為您的功能更改代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM