簡體   English   中英

search:在marklogic中搜索顯示的意外行為

[英]Unexpected behavior shown by search:search in marklogic

我正在使用search:search搜索以下類型的結構:

search:search(
  "",
  <options>
    <additional-query>
      {
        cts:and-query((
            cts:collection-query("A"),
            cts:not-query(cts:collection-query("B")),
            cts:not-query(cts:collection-query("C")),
            cts:and-query((
                cts:element-value-query(
                  xs:QName("uri"),
                  cts:search(collection("A"),
                    cts:element-value-query(xs:QName("uri"),
                      cts:search(collection("B"),
                        cts:element-value-query(xs:QName("uri"),
                          cts:search(collection("C"),cts:word-query("Hello"))/fn:base-uri()
                        )
                      )/fn:base-uri()
                    )
                  )/fn:base-uri()
                ),
                dls:documents-query()
            ))
        ))
      }
    </additional-query>
  </options>,1,10)

結果為0。

但是,如果我嘗試這樣做,它會提供所需的結果

let $a :=
  cts:search(collection("A"),
    cts:element-value-query(xs:QName("uri"),
      cts:search(collection("B"),
        cts:element-value-query(xs:QName("uri"),
          cts:search(collection("C"),cts:word-query("Hello"))/fn:base-uri()
        )
      )/fn:base-uri()
    )
  )/fn:base-uri()
return
  search:search(
    "",
    <options>
      <additional-query>
        {
          cts:and-query((
              cts:collection-query("A"),
              cts:not-query(cts:collection-query("B")),
              cts:not-query(cts:collection-query("C")),
              cts:and-query((
                  cts:element-value-query(
                    xs:QName("uri"),
                    $a
                  ),
                  dls:documents-query()
              ))
          ))
        }
      </additional-query>
    </options>, 1, 10)

它解決了將某些部分取出然后傳遞給search:search選項的問題。 請調查並提供幫助

您不能將cts:query直接嵌入search:options

相反,請嘗試:

<search:options>
<search:additional-query>{...your cts:query here ...}</search:additional-query>
</search:options>

有關更多信息,請參見:

http://docs.marklogic.com/guide/rest-dev/appendixb#id_98507

另外,如果要使用子查詢來檢索用作標准的值,則應在作為值源和查詢目標的元素上創建范圍索引,並使用cts:values()詞典查找。 有關更多信息,請參見:

http://docs.marklogic.com/cts:values

希望能有所幫助,

暫無
暫無

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

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