xquery - Marklogic 无词干搜索未按预期工作
问题描述
我正在使用 ML 8。
'unfiltered' cts:对于带有 'stemmed' 选项的变音符号单词,搜索没有按预期工作
找到下面的例子。
我已使用 uri /a.xml 在 ML DB 中插入以下 xml
情况1:
<root>
<a>FSM İlmî Araştırmalar İnsan ve Toplum Bilimleri Dergisi</a>
</root>
和我正在使用的查询
cts:search(/*,cts:element-word-query(xs:QName("a"), "FSM İlmî Araştırmalar İnsan ve Toplum Bilimleri Dergisi",("case-insensitive","stemmed")),'unfiltered')
上面的查询导致空结果,如果我选择unstemmed
,那么它工作正常。
而在其他一些情况下,它与stemmed
选项一起工作正常。例如
案例2:
<root>
<c>Życie Literackie</c>
</root>
在这种情况下,带有选项的相同查询stemmed
可以正常工作。
所以,我的问题是为什么stemmed
选项在第一种情况下没有按预期工作,为什么在第二种情况下工作正常。
stemmed
另外,在变音符号搜索中的作用是什么?
案例 3: 我用 uri /d.xml 插入了如下的普通字符串
<root>
<c>Zycie Literackie</c>
</root>
并运行查询-
cts:search(/*,cts:element-word-query(xs:QName("c"), "Zycie Literackie",("case-insensitive","stemmed")),'unfiltered')
但它同时返回变音符号和普通字符串。结果如下所示
<root>
<c>Życie Literackie</c>
</root>
<root>
<c>Zycie Literackie</c>
</root>
它应该只返回普通字符串Zycie Literackie
。
同样,插入一个 XML 文件,如下所示
案例4:
<root>
<data>Türkiye Araştırmaları Literatür Dergisi</data>
</root>
查询是-
cts:search(
doc(),
cts:element-word-query(
xs:QName('data'),
"Turkiye Araştırmaları Literatür Dergisi",
('case-insensitive','wildcarded','diacritic-sensitive','unstemmed')
),
"unfiltered"
)
然后,它会导致空结果。如果使用Turkiye
,Araştırmaları
或之类的词进行搜索Literatür
,则返回正确的结果。
为什么在查询中找不到给定字符串的所需搜索结果,而它与单个单词一起工作正常?
.
解决方案
案例3说明:当你没有在options中明确指定“diacritic-sensitive”时,文本节点内容决定是执行“diacritic-sensitive”搜索还是“diacritic-insensitive”搜索。如果文本节点中的单词包含变音符号,则执行“变音敏感”搜索,否则不执行。同样适用于区分大小写。
推荐阅读
- c++ - 将矩形土地划分为范围
- redmine - 运行安装后步骤的 bitnami redmine 问题
- icons - 如何在 Angular 中使用旧的 Font Awesome 图标?
- reactjs - Redux 内部 axios 的自定义 Header 问题
- pdfbox - 使用 PDF BOX 将 PDF(混合方向的多页)转换为 PostScript,但在打印时 PDF 的自动定位丢失
- r - 在 data.frame 变量的值内插入特定的 unicode 符号
- sgx - 如何证明某些数据是在 Enclave(英特尔 SGX)内部计算(或生成)的?
- javascript - 访问相似的 DOM 元素
- java - Java/Kotlin - 区分不同模块的相同限定名
- c# - 当我选择不正确的答案时,下一个问题会加载已显示的答案