标签: marklogic-8

忽略cts中的元素:搜索

我有一些xml文档,其结构如下:

<root>
  <intro>...</intro>
   ...
  <body>
    <p>..................
       some text CO<sub>2</sub>
       .................. </p>
   </body>
</root>
Run Code Online (Sandbox Code Playgroud)

现在我想用CO2短语搜索所有结果,并希望在搜索结果中获得上述类型的结果.为此,我使用此查询 -

cts:search 
(fn:collection ("urn:iddn:collections:searchable"), 
cts:element-query
          (
            fn:QName("http://iddn.icis.com/ns/fields","body"), 
            cts:word-query
            (
              "CO2", 
              ("case-insensitive","diacritic-sensitive","punctuation-insensitive",
                "whitespace-sensitive","unstemmed","unwildcarded","lang=en"),
              1
            )
          )
, 
("unfiltered", "score-logtfidf"), 
0.0)
Run Code Online (Sandbox Code Playgroud)

但是使用这个我无法获得文档CO<sub>2</sub>.我只用简单的短语获取数据CO2.

如果我替换搜索短语,CO 2那么我只能使用CO<sub>2</sub>而不是使用CO2

我想获得两者的组合数据CO<sub>2</sub>CO2搜索结果.

我可以<sub>通过任何方式忽略,还是有其他方法来解决这个问题?

xquery full-text-search marklogic marklogic-8

2
推荐指数
1
解决办法
169
查看次数

Xquery搜索选项中的自定义排序顺序

我正在编写Rest Extension进行搜索,这将获取在JSON嵌套文档中搜索的参数.我能够通过编写自定义约束来完成此操作,然后使用此自定义约束解析搜索文本并构建查询.

我们也可以为排序顺序做同样的事情吗?顺便说一句,我的意思是我根据传递的参数为搜索选项构建排序顺序.

我在其中一个例子中看到,执行以下操作

let $options :=
<search:options>
  <search:operator name="sort">
    <search:state name="relevance">
      <search:sort-order>
        <search:score/>
      </search:sort-order>
    </search:state>
    <search:state name="year">
      <search:sort-order direction="descending" type="xs:gYear"
            collation="">
        <search:attribute ns="" name="year"/>
        <search:element ns="http://marklogic.com/wikipedia"
          name="nominee"/>
      </search:sort-order>
      <search:sort-order>
        <search:score/>
      </search:sort-order>
    </search:state>
  </search:operator>
</search:options>
return
search:search("lange sort:year", $options)
Run Code Online (Sandbox Code Playgroud)

但即便在这里也有一些硬编码要对哪些字段进行排序.我想做自定义约束,在运行时我确定排序顺序列.

这可能吗 ??

marklogic marklogic-8

2
推荐指数
1
解决办法
399
查看次数

MarkLogic 8 - XQuery - cts查询按值查找文档属性

有没有办法在文档属性中查找具有特定属性值的文档

后续问题,文档属性是否已编入索引?

(属性意思是xdmp:document-add-properties()那种)

xquery marklogic marklogic-8

2
推荐指数
1
解决办法
237
查看次数

MarkLogic - 集合和索引之间的最佳解决方案

我有几个这样的JSON:

[{
    "type": "car",
    "field1": "test"
}, {
    "type": "bike",
    "field1": "test"
}]
Run Code Online (Sandbox Code Playgroud)

我将它们存储在MarkLogic 8.4中,我想对它们执行一些搜索查询以根据类型检索文档(例如:查找类型为"car"的所有文档).

我有两个可能的解决方案:

  • 将Marklogic集合设置为每个文档.示例:在示例文档中放置"car"和"bike"集合.在我的搜索查询中,我可以添加集合限制.
  • 在每个JSON的"type"字段上放置一个索引

在表现和/或最佳实践方面,一种方法是否优于另一种方法?

谢谢,罗曼.

collections json marklogic marklogic-8

2
推荐指数
1
解决办法
112
查看次数

Xquery从XSD架构获取属性名称和类型?

我正在关注marklogic的教程,

https://developer.marklogic.com/learn/2007-04-schema

在一个场景中,我有xsd文件

    <!-- tutorial.xsd -->
<xs:schema targetNamespace="http://marklogic.com/tutorial"
 attributeFormDefault="unqualified"
 elementFormDefault="unqualified"
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="name" type="xs:token"
   abstract="false" nillable="false"/>
  <xs:element name="qualification" type="xs:token"
   abstract="false" nillable="false"/>
  <xs:element name="born" type="xs:date"
   abstract="false" nillable="false"/>
  <xs:element name="dead" type="xs:date"
   abstract="false" nillable="false"/>
  <xs:element name="isbn" type="xs:unsignedLong"
   abstract="false" nillable="false"/>
  <xs:attribute name="id" type="xs:ID"/>
  <xs:attribute name="available" type="xs:boolean"/>
  <xs:attribute name="lang" type="xs:language"/>
  <xs:element name="title" abstract="false" nillable="false">
    <xs:complexType mixed="false">
      <xs:simpleContent>
    <xs:extension base="xs:token">
      <xs:attribute ref="lang" use="optional"/>
    </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="library" abstract="false" nillable="false">
    <xs:complexType mixed="false">
      <xs:sequence minOccurs="1" maxOccurs="1">
    <xs:element ref="book" maxOccurs="unbounded" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="author" abstract="false" …
Run Code Online (Sandbox Code Playgroud)

xml xsd xquery marklogic marklogic-8

2
推荐指数
1
解决办法
876
查看次数

Marklogic - 使用java api在json的元素数组中更新

让我们说我们有json的样子

{ 
   "name":"abc", 
   "lastName":"xyz", 
   "description":"aaaaa aaaa", 
   "dob":11-10-1988,
   "workInformation":[
       {
          "address":"kolkata", 
          "workFor":"vvv Pvt Ltd",
          "reference" : [
              {
                 "refName" : "ttt",
                 "refId" : "12345"
              },
               {
                 "refName" : "sss",
                 "refId" : "23412"
              }
          ]
       },
        {
          "address":"bangalore", 
          "workFor":"www Pvt Ltd",
          "reference" : [
              {
                 "refName" : "rrr",
                 "refId" : "43434"
              },
               {
                 "refName" : "yyyy",
                 "refId" : "34213"
              }
          ]
       },
       {
          "address":"delhi", 
          "workFor":"sss Pvt Ltd",
          "reference" : [
              {
                 "refName" : "qqqq",
                 "refId" : "76767"
              },
               {
                 "refName" : "gggg", …
Run Code Online (Sandbox Code Playgroud)

json marklogic jackson marklogic-8

2
推荐指数
1
解决办法
211
查看次数

Marklogic - 我想在json文档的数组部分中使用带有键值的java api进行元素搜索

我想从文档的数组元素部分搜索具有键值的元素.让我说我有json看起来像 -

{ 
   "name":"abc", 
   "lastName":"xyz", 
   "description":"aaaaa aaaa", 
   "dob":11-10-1988,
   "workInformation":[
       {
          "address":"kolkata", 
          "workFor":"vvv Pvt Ltd"
       },
        {
          "address":"bangalore", 
          "workFor":"www Pvt Ltd"
       }
    ]
}
Run Code Online (Sandbox Code Playgroud)

假设我想在数组属性workInformation中使用java api搜索下面提到的键和值 -

key - workFor,value - vvv私人有限公司

请让我知道,怎么做.

谢谢阅读.

marklogic marklogic-8

2
推荐指数
1
解决办法
149
查看次数

如何使用marklogic java api编写cts查询

我想使用MarkLogic Java API在查询下运行

cts:search(fn:doc(), cts:and-query((cts:collection-query("/abc/xyz"), 
cts:collection-query("/abc/xyz/pqr"))))
Run Code Online (Sandbox Code Playgroud)

marklogic marklogic-8

2
推荐指数
1
解决办法
249
查看次数

如何基于集合计数并使用XQuery进行多元素字查询?

试图根据不同的过滤器和一个集合计算汽车数量.即使我们看到多辆汽车符合要求,查询也会返回0.

fn:count(cts:search(fn:collection("com.cars"), cts:and-query((
    cts:element-word-query(xs:QName("exteriorColor"),  "red", "wildcarded" ),
    cts:element-word-query(xs:QName("interiorColor"),  "gray", "wildcarded" )
    cts:element-word-query(xs:QName("powerSteering"),  json:null(), "wildcarded" )
    ))))
Run Code Online (Sandbox Code Playgroud)

测试数据:

{
      "id":1
      "carName":"Toyoto",
      "exteriorColor": "red",
      "interiorColor": "gray",
      "powerStreering": null
    }
    {
      "id":2
      "carName":"Toyoto",
      "exteriorColor": "blue",
      "interiorColor": "gray",
      "powerStreering": null
    }
    {
      "id":3
      "carName":"Toyoto",
      "exteriorColor": "red",
      "interiorColor": "gray",
      "powerStreering": "yes"
    }
    {
      "id":4
      "carName":"Toyoto",
      "exteriorColor": "white",
      "interiorColor": "gray",
      "powerStreering": null
    }
    {
      "id":5
      "carName":"Toyoto",
      "exteriorColor": "red",
      "interiorColor": "gray",
      "powerStreering": null
    } 
Run Code Online (Sandbox Code Playgroud)

xquery marklogic marklogic-8

2
推荐指数
1
解决办法
179
查看次数

仅通过传递部分节点名称获取子节点的XPath

我在MarkLogic中有以下XML存储,

<testDoc>
    <test>
        <test1>test1</test1>
        <test2>test2</test2>
        <test3>test3</test3>
    </test>
</testDoc>
Run Code Online (Sandbox Code Playgroud)

我的要求是只获得子节点的xpath,如果我将测试(部分节点名称)传递给我的xquery然后我期待

/testDoc/test/test1
/testDoc/test/test2
/testDoc/test/test3
Run Code Online (Sandbox Code Playgroud)

但是我的xquery回来了,

/testDoc
/testDoc/test
/testDoc/test/test1
/testDoc/test/test2
/testDoc/test/test3
Run Code Online (Sandbox Code Playgroud)

我在qconsole上执行的XQuery是,

 xquery version "1.0-ml";
 let $xml := document { fn:doc("/test/testDoc")}
 let $elem-name := "test"
 let $elems := $xml//*[local-name()[contains(lower-case(.), lower-case($elem-name))]]
 return $elems ! xdmp:path(.)
Run Code Online (Sandbox Code Playgroud)

请指导我达到我的要求.

marklogic marklogic-8

2
推荐指数
1
解决办法
49
查看次数

标签 统计

marklogic ×10

marklogic-8 ×10

xquery ×4

json ×2

collections ×1

full-text-search ×1

jackson ×1

xml ×1

xsd ×1