MarkLogic QBE的问题始于功能,QBE API中的QBE日期范围和Search API中的搜索过滤条件

时间:2019-05-28 07:25:03

标签: search wildcard marklogic query-by-example

  1. 我正在探索MarkLogic QBE(通过示例查询)API,在那方面,我想检查如何查找以“ Hello *”之类的关键字开头的“名称”键的JSON文档?我们可以在QBE查询中使用$ value参数来获取精确的值匹配,而在QBE查询中可以使用$ word参数来获取包含功能。但是我想将其用于使用QBE中使用通配符选项的功能开头的功能。我为数据库启用了“跟踪通配符搜索”索引,并且还在“名称”上创建了字段和字段范围索引。 例如,下面的查询示例应返回包含名称以Hello开头且不包含Hello字的json文档的结果集
https://Server:port/v1/qbe?format=json&pageLength=10&start=1&options=search_option_advanced&directory=/json/&query={"$query":{"Name":{"$word":["Hello*"],"$exact":false,"$case-sensitive":false}}}
  1. 我也在QBE中寻找日期范围查询。我正在尝试下面的查询示例
https://Server:port/v1/qbe?format=json&pageLength=10&start=1&directory=/json/&options=search_option_advanced_date&query={"$query":{
"$and":[{"creation_date":{"$le":"2018-12-12T05:40:47.496"}},{"creation_date":{"$ge":"2017-12-12T05:40:47.496"}}],"$filtered":true}}

在这里,我在“ / Creation_Date_date”上创建了路径范围索引,并在“ Creation_Date_date”上创建了&元素范围索引 还在持久选项中的search_option_advanced_date文件中的约束下方添加了

<constraint name="creation_date">
   <range type="xs:date">
     <element name="Creation_Date_date"/>
   </range>
 </constraint>

尽管应该获取结果,但我还是空白了

{"snippet-format":"snippet", "total":0, "start":1, "page-length":10, "selected":"include-with-ancestors", "results":[], "facets":{"EntityType":{"type":"xs:string", "facetValues":[]}, "Category":{"type":"xs:string", "facetValues":[]}, "Genre":{"type":"xs:string", "facetValues":[]}, "creation_date":{"type":"xs:date", "facetValues":[]}}, "metrics":{"query-resolution-time":"PT0.016599S", "facet-resolution-time":"PT0.000578S", "extract-resolution-time":null, "total-time":"PT0.017743S"}}

和第三个查询 3.我需要使用一些常见的过滤条件来搜索一些文档,或者使用Search API来说谓词/ where子句。在搜索选项xml中,可以使用Search API创建此类查询的任何方法?

1 个答案:

答案 0 :(得分:0)

如果Name是JSON属性,并且您已按照以下说明为该属性启用通配符搜索,则该查询看起来应该可以工作:

http://docs.marklogic.com/guide/search-dev/wildcard#id_39731

如果正确配置了通配符搜索,但在QBE中通配符搜索不起作用,请提交支持记录。

据我所知,通配符搜索不适用于范围索引。服务器确实支持针对范围索引的值匹配查找,但这不是查询。