簡體   English   中英

MarkLogic中“未過濾”搜索的意外行為

[英]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.

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