首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cts搜索空格敏感

cts搜索空格敏感
EN

Stack Overflow用户
提问于 2019-02-12 08:45:19
回答 1查看 161关注 0票数 1

我只想创建一个未过滤的 whitespace-sensitive cts查询,但不知怎么地,它无法工作(没有其他约束)。

这是我的测试环境:

代码语言:javascript
复制
xquery version "1.0-ml";

xdmp:document-insert("test1.xml", <test><title>test word</title></test>);
xdmp:document-insert("test2.xml", <test><title>test-word</title></test>);


cts:search(//test, cts:element-value-query(xs:QName("title"), "test word", ("whitespace-sensitive")), ("unfiltered"))

我有两个只在一个字符-中不同的文档。执行此cts搜索将返回两个文档。看着执行计划,事情变得很奇怪。最后的计划显示如下:

代码语言:javascript
复制
<qry:term-query weight="1">
 <qry:key>5029803220044614354</qry:key>
 <qry:annotation>element(title,value("test","word"))</qry:annotation>
</qry:term-query>

MarkLogic似乎在搜索没有空格的单词 testword。它似乎没有使用选项whitespace-sensitive。只有在我再添加三个选项“区分大小写”、“对对话框敏感”和“对标点符号敏感”时,才能进行实际的空格敏感搜索。删除任何选项都会导致对空格不敏感的搜索:

代码语言:javascript
复制
xdmp:plan(cts:search(//test, cts:element-value-query(xs:QName("title"), "test word", ("case-sensitive", "diacritic-sensitive", "punctuation-sensitive", "whitespace-sensitive")), ("unfiltered")))
=> ...
<qry:term-query weight="1">
 <qry:key>11298961959398038325</qry:key>
 <qry:annotation>element(title,value("test"," ","word"))</qry:annotation>
</qry:term-query>

我是否误解了“空格敏感”选项?

使用MarkLogic 9.8-0.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-12 15:25:21

我认为,也许你是期待所有的选项是可解决的,未经过滤。情况并非如此。某些选项以及选项和索引设置的组合如果不进行筛选,就无法解析。通常,可以从索引中解析对空格敏感的查询的唯一情况是,查询是一个“精确”的值查询。通常,空白(和标点符号)没有索引。这就是计划给你看的。由于索引中没有这些信息,未经过滤的查询将无法在此基础上排除结果。具有实际数据的过滤器可以根据空白排除结果并返回正确的结果。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54645986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档