Marklogic unstemmed搜索未按预期工作

时间:2018-05-23 07:00:00

标签: xquery marklogic marklogic-8

我正在使用ML 8。

'未过滤'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"
) 

然后,它导致空结果。如果使用TurkiyeAraştırmalarıLiteratür等字词进行搜索,则会返回正确的结果。

为什么查询中找不到所需的搜索结果,而单词却能正常运行?

1 个答案:

答案 0 :(得分:0)

案例3的解释:如果未在选项中明确指定“变音符号敏感”,则文本节点内容将确定是否应执行“变音符号敏感”搜索或“变音不敏感”搜索。如果文本节点中的单词包含变音字符,则执行“变音符敏感”搜索,否则不执行。同样适用于区分大小写。