cts 搜索空格敏感
cts search whitespace-sensitive
我只是想创建一个 unfiltered whitespace-sensitive
cts 查询但不知何故无法让它工作(没有其他限制)。
这是我的测试环境:
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 搜索 returns 两个文档。查看执行计划,事情变得很奇怪。最终计划显示如下:
<qry:term-query weight="1">
<qry:key>5029803220044614354</qry:key>
<qry:annotation>element(title,value("test","word"))</qry:annotation>
</qry:term-query>
MarkLogic 似乎搜索两个 words test
和 word
没有空格。它似乎没有使用选项 whitespace-sensitive
。只有当我再添加三个选项 "case-sensitive"、"diacritic-sensitive" 和 "punctuation-sensitive" 时,它才会执行实际的空格敏感搜索。删除任何选项都会导致对空格不敏感的搜索:
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>
我是不是误解了选项 "whitespace-sensitive"?
使用 MarkLogic 9.8-0。
我想您可能希望所有选项都可以不经过滤地解析。事实并非如此。某些选项以及选项和索引设置的组合不经过过滤是无法解析的。通常,可以从索引中解析白色 space 敏感查询的唯一情况是查询是 "exact" 值查询。一般来说,白色 space(和标点符号)不会被编入索引。这就是计划向您展示的内容。由于该信息在索引中不可用,因此未过滤的查询将无法在此基础上排除结果。该过滤器也具有实际数据,可以根据白色 space 和 return 正确结果排除结果。
我只是想创建一个 unfiltered whitespace-sensitive
cts 查询但不知何故无法让它工作(没有其他限制)。
这是我的测试环境:
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 搜索 returns 两个文档。查看执行计划,事情变得很奇怪。最终计划显示如下:
<qry:term-query weight="1">
<qry:key>5029803220044614354</qry:key>
<qry:annotation>element(title,value("test","word"))</qry:annotation>
</qry:term-query>
MarkLogic 似乎搜索两个 words test
和 word
没有空格。它似乎没有使用选项 whitespace-sensitive
。只有当我再添加三个选项 "case-sensitive"、"diacritic-sensitive" 和 "punctuation-sensitive" 时,它才会执行实际的空格敏感搜索。删除任何选项都会导致对空格不敏感的搜索:
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>
我是不是误解了选项 "whitespace-sensitive"?
使用 MarkLogic 9.8-0。
我想您可能希望所有选项都可以不经过滤地解析。事实并非如此。某些选项以及选项和索引设置的组合不经过过滤是无法解析的。通常,可以从索引中解析白色 space 敏感查询的唯一情况是查询是 "exact" 值查询。一般来说,白色 space(和标点符号)不会被编入索引。这就是计划向您展示的内容。由于该信息在索引中不可用,因此未过滤的查询将无法在此基础上排除结果。该过滤器也具有实际数据,可以根据白色 space 和 return 正确结果排除结果。