[英]unexpected behaviour of “unfiltered” search in MarkLogic
未過濾的搜索給出錯誤的結果。
請找到以下xml示例和問題。
樣品:
<root>
<id1>11</id1>
<elem1>ee1</elem1>
<ele2>ee2</ele2>
<entry>
<volume>10</volume>
<issue>10</issue>
<elemEntry>eleme</elemEntry>
</entry>
<entry>
<volume>20</volume>
<issue>20</issue>
<elemEntry>eleme</elemEntry>
</entry>
<entry>
<volume>20</volume>
<issue>10</issue>
<elemEntry>eleme</elemEntry>
</entry>
<entry>
<volume>10</volume>
<issue>20</issue>
<elemEntry>eleme</elemEntry>
</entry>
</root>
我必須獲取具有<volume> & <issue>
值組合的入口節點,它們都應出現在<entry>
節點下(例如:volume-10&issue-10,volume-10&issue-20)
如上例所示,我需要整個入口節點為<volume> (10), <issue> (10)
。
它不應返回其他入口節點,因為其他入口節點不具有所需的volume
(值10), issue
(值10)組合。
請在我正在做的cts:search
下面找到。
cts:search(
doc("/sample.xml")//entry,
cts:and-query((
cts:element-value-query(xs:QName("volume"), "10", ("case-insensitive","unstemmed")),
cts:element-value-query(xs:QName("issue"), "10", ("case-insensitive","unstemmed"))
)),
"unfiltered"
)
假設示例xml使用/sample.xml
uri存儲在數據庫中
以上查詢還向我返回了其他條目( <entry>
)。
如果我將執行“過濾”搜索,則上面的查詢將為我返回正確的結果。
請告訴我,為什么會發生這種情況以及解決方案 。
如果還有其他好方法可以使入口節點具有volume and issue
組合,請告訴我。
您還應該考慮更改數據模型。 當1個文檔= 1行時,最好使用MarkLogic。 如果遵循該模式,您將擁有更高效的查詢並且可以使用更小的索引。 索引都圍繞文檔中的事實,並且要獲得此類子文檔限制,您需要使用職位,職位可能會變得昂貴,或者過濾后的搜索甚至會變得更加昂貴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.