MarkLogic 词干提取基础
MarkLogic stemming basic
我将我的数据库语言设置为 en
,stemmed searches
设置为 Basic
,word 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
作为 further
、farther
以及 far
。高级词干提取允许您在对 farther
进行词干搜索时找到 further
,反之亦然。
搜索指南部分提供了更多详细信息:'Stemming in MarkLogic'
HTH!
我将我的数据库语言设置为 en
,stemmed searches
设置为 Basic
,word 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
作为 further
、farther
以及 far
。高级词干提取允许您在对 farther
进行词干搜索时找到 further
,反之亦然。
搜索指南部分提供了更多详细信息:'Stemming in MarkLogic'
HTH!