邻近搜索问题,MarkLogic中指定元素内的通配符

时间:2015-11-23 07:46:50

标签: search marklogic

我们正在使用MarkLogic 7.0-4。我们正面临着邻近搜索的问题,在指定元素中使用了通配符。

查询如下所示:

cts:near-query(
  (
    cts:element-word-query(xs:QName("abstract"), "microf*)", 
      ("case-insensitive","diacritic-insensitive","punctuation-insensitive",
       "whitespace-sensitive","unstemmed","wildcarded","lang=en"), 1),
    cts:element-word-query(xs:QName("abstract"), "transplant*)",
      ("case-insensitive","diacritic-insensitive","punctuation-insensitive",
       "whitespace-sensitive","unstemmed","wildcarded","lang=en"), 1)
  ), 2, (), 1)

我们正在运行未经过滤的。它应该返回在指定元素中具有通配符的文档。虽然当前没有文档与查询匹配,但是正在返回文档。显然文档是匹配的,因为它有一个元素,而不是指定的元素,它在给定的距离内具有通配符。

在相关索引设置中,我们启用了以下一项:

元素字位,   快速元素短语搜索,   三个字符搜索,   三个字的位置,   快速元素字符搜索,   快速元素单词搜索,   尾随通配符搜索,   尾随通配符的位置,   快速元素尾随通配符搜索

要重现的示例数据:

xdmp:document-insert(
  '/questions/33865927-1.xml',
  <root>
    <abstract>microfoo blah blah blah blah transplantbar</abstract>
  </root>
)

1 个答案:

答案 0 :(得分:0)

我添加了word positions索引,误报消失了。

您已启用element word positions。我怀疑只有商店的条款与包含元素相关,而不是整体文档中的位置(不要引用我的内容)。对于此查询,即使我关闭了element word positions,只要word positions处于启用状态,我就会得到正确答案。