【发布时间】:2018-05-23 07:00:00
【问题描述】:
我正在使用 ML 8。
'unfiltered' cts:search 对于带有 '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 等词进行搜索,则返回正确的结果。
为什么在查询中没有使用给定字符串找到所需的搜索结果,而它与单个单词一起工作正常?
.
【问题讨论】:
标签: xquery marklogic marklogic-8