带约束的 MarkLogic 搜索返回错误结果

MarkLogic Search With Constraint Returning Wrong Result

xquery version "1.0-ml";

import module namespace
  search = "http://marklogic.com/appservices/search"
  at "/MarkLogic/appservices/search/search.xqy";

let $options := 
  <options xmlns="http://marklogic.com/appservices/search">
    <constraint name="city">
      <value>
        <element  name="city"/>
      </value>
    </constraint>
    <sort-order type="xs:string" collation="http://marklogic.com/collation/"
      direction="ascending">
      <element ns="" name="userName"/>
    </sort-order>
  </options>
return search:search("city : Atlanta", $options)

当我使用 city : Atlanta 在 qconsole 上执行上述查询时,我得到了正确的匹配文档详细信息(即 2 个匹配项),但是当我使用上述查询 city NE Atlanta 时,我得到了错误的结果。 ..这意味着获取 ML 中可用的所有文档。

我的要求是什么时候我通过 city NE Atlanta 它应该显示零匹配而不是显示来自 ML 的所有文档。

我也不想为 city 创建范围索引,因为这个字段可能会在运行时改变。

如有错误请指正。

在文档搜索中,比较仅适用于范围查询。

搜索 API 忽略无效查询,生成空查询,匹配数据库中的所有文档。

然而,通过在约束前加上减号(如“-city:Atlanta”),否定查询可用于值查询,产生:

<cts:not-query xmlns:cts="http://marklogic.com/cts">
  <cts:element-value-query>
    <cts:element>city</cts:element>
    <cts:text xml:lang="en">Atlanta</cts:text>
  </cts:element-value-query>
</cts:not-query>

该查询是否检索到您期望的文档?

希望对您有所帮助,