MarkLogic 词干提取基础

MarkLogic stemming basic

我将我的数据库语言设置为 enstemmed searches 设置为 Basicword searches 已禁用。

对于像下面这样的文档,我执行的查询仅适用于要找到的 first/shortest 词干(如 here 所述)。 further的词干 returns 3个词干:further, farther and far。我用

检查了这个
cts:stem("further")

因为基本词干搜索应该只索引最短的词干,所以我预计使用 farther 搜索不会找到我的文档。但事实并非如此。

xquery version "1.0-ml";

let $doc := 
<doc>
  <title>further</title>
</doc>

return xdmp:document-insert('test.xml', $doc);

cts:search(doc(), cts:word-query("farther")); // finds my document

cts:stem("further")

我有什么误解吗?为什么搜索 farther 会找到带有 further 的文档,即使它不是 shortest/first 词干?

即使使用 "unstemmed" 选项(在本例中启用 word searches),搜索第三个词干也会找到我的文档。

cts:search(doc(), cts:word-query("further", ("unstemmed")));

使用 MarkLogic 9.0-7.2。

MarkLogic 中的通用索引有多个部分。一种用于词干搜索,另一种用于 unstemmed/wildcarded 搜索。索引的词干部分包含词干,但非词干部分包含非词干标记。这就是为什么对实际值进行无词干搜索找到匹配项。

关于词干搜索:正如您在 cts:stem 的文档中所读到的,该函数 returns 所有词干都与数据库设置无关。但是,returns 它们的顺序很重要。 cts:stem("further") returns far, further, farther, cts:stem("farther") returns far, farther, further, cts:stem("far") returns far.

据我了解,基本词干提取采用 cts:stem 返回的第一项,并将其用于索引。从上面可以看出,这意味着它使用 far 作为 furtherfarther 以及 far。高级词干提取允许您在对 farther 进行词干搜索时找到 further,反之亦然。

搜索指南部分提供了更多详细信息:'Stemming in MarkLogic'

HTH!