【问题标题】:Marklogic REST API wildcard searchMarklogic REST API 通配符搜索
【发布时间】:2018-06-04 13:26:47
【问题描述】:

我需要为一个集合中的 json 文档创建分页搜索。 文档结构:

{
   "Id": "OBJ-0000",
   "Title": "sample text",
   "Visible": true
}

我在字段 Id、Title 和 Visible 以及搜索选项 xml 配置上创建了元素范围索引:

<?xml  version="1.0" encoding="UTF-8"?>
<search:options xmlns:search="http://marklogic.com/appservices/search">
  <search:constraint name="id">
    <search:range facet="false" type="xs:string">
      <search:json-property>Id</search:json-property>
    </search:range>
  </search:constraint>
  <search:constraint name="title">
    <search:range facet="false" type="xs:string">
      <search:json-property>Title</search:json-property>
    </search:range>
  </search:constraint>
  <search:constraint name="visible">
    <search:value type="boolean">
      <search:json-property>Visible</search:json-property>
    </search:value>
  </search:constraint>
  <search:operator name="sort">
    <search:state name="idAsc">
      <search:sort-order direction="ascending">
        <search:json-property>Id</search:json-property>
      </search:sort-order>
    </search:state>
    <search:state name="idDesc">
      <search:sort-order direction="descending">
        <search:json-property>Id</search:json-property>
      </search:sort-order>
    </search:state>
    <search:state name="titleAsc">
      <search:sort-order direction="ascending">
        <search:json-property>Title</search:json-property>
      </search:sort-order>
      <search:sort-order direction="descending">
        <search:json-property>Id</search:json-property>
      </search:sort-order>
    </search:state>
    <search:state name="titleDesc">
      <search:sort-order direction="descending">
        <search:json-property>Title</search:json-property>
      </search:sort-order>
      <search:sort-order direction="descending">
        <search:json-property>Id</search:json-property>
      </search:sort-order>
    </search:state>
    <search:state name="isvisibleAsc">
      <search:sort-order direction="ascending">
        <search:json-property>Visible</search:json-property>
      </search:sort-order>
      <search:sort-order direction="descending">
        <search:json-property>Id</search:json-property>
      </search:sort-order>
    </search:state>
    <search:state name="isvisibleDesc">
      <search:sort-order direction="descending">
        <search:json-property>Visible</search:json-property>
      </search:sort-order>
      <search:sort-order direction="descending">
        <search:json-property>Id</search:json-property>
      </search:sort-order>
    </search:state>
  </search:operator>
  <search:return-results>true</search:return-results>
  <search:return-metrics>false</search:return-metrics>
  <search:transform-results apply="raw">
  </search:transform-results>
  <search:debug>false</search:debug>
</search:options>

之后,我参考选项文件创建了 POST 请求:

LATEST/search?format=json&pageLength=20&start=1&options=objectSearch   

使用结构化查询:

 {
    "query": {
      "operator-state": {
        "operator-name": "sort",
        "state-name": "TitleAsc"
      },
      "and-query": {
        "term-query": { "text": "*exam*" }
      }
    }
}

它有效。但是,但是,当我使用参数 start=1 进行查询时,在 "total" 中我得到的结果比实际结果要多,但是如果我指定了 start=20 例如,"total" 计算正确。仅当我在搜索词中首先使用带有通配符 (*) 的搜索参数并且词包含超过 3 个字符时,才会发生这种情况。 我该如何解决这个问题?

【问题讨论】:

  • 您是否在数据库设置中启用了通配符选项?
  • @grtjn 是的,我打开了单词搜索单词位置三个字符搜索三个字词位置
  • trailing wildcard 选项呢?

标签: rest marklogic marklogic-9


【解决方案1】:

来自文档:

https://docs.marklogic.com/search:search

search:search 的输出返回一个元素,该元素又包含一个总属性。 total 属性的值是一个估计值,基于查询的索引分辨率,并且没有为准确性进行过滤。索引解析的准确性取决于数据库的索引配置、查询和正在搜索的数据。

这意味着只有为您的查询打开所有必要的索引时,您才会收到准确的总数。

在此处使用推荐的通配符索引设置应该可以帮助您获得准确的总数:https://docs.marklogic.com/guide/search-dev/wildcard#id_14163

根据您上面的评论,您似乎在代码点排序规则中缺少单词词典。

【讨论】:

  • 在代码点排序规则中添加单词词典后,没有任何变化。目前,我的数据库中有大约 100,000 个这样的文档。我可以在搜索结果中获得字段总计的确切值吗?
  • @EvgenyMalyuta 如果您仔细遵循了我链接到的文档中的所有索引建议,但仍然没有看到准确的搜索结果总数,您应该联系您的 MarkLogic 客户团队或 MarkLogic 支持进一步的指导。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 2014-01-28
  • 2019-01-03
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多