【问题标题】:Marklogic unstemmed search is not working as expectedMarklogic 无词干搜索未按预期工作
【发布时间】: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"
) 

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

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

.

【问题讨论】:

    标签: xquery marklogic marklogic-8


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      • 2017-05-12
      • 2018-10-17
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多