首页 > 解决方案 > 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,则返回正确的结果。

为什么在查询中找不到给定字符串的所需搜索结果,而它与单个单词一起工作正常?

.

标签: xquerymarklogicmarklogic-8

解决方案


案例3说明:当你没有在options中明确指定“diacritic-sensitive”时,文本节点内容决定是执行“diacritic-sensitive”搜索还是“diacritic-insensitive”搜索。如果文本节点中的单词包含变音符号,则执行“变音敏感”搜索,否则不执行。同样适用于区分大小写。


推荐阅读