首页 > 解决方案 > 拼写:建议错误的顺序?

问题描述

spell:suggest用来查询字典。我会假设结果是按距离排序的。但情况并非如此,spell:suggest-detailed如下例所示。

例子:

spell:suggest-detailed("/my-dictionary.xml", "cohn", 
  <options xmlns="http://marklogic.com/xdmp/spell">
    <distance-threshold>10</distance-threshold>
    <maximum>3</maximum>
  </options>
)

结果:

<spell:suggestion original="cohn" dictionary="/my-dictionary.xml" xmlns:spell="http://marklogic.com/xdmp/spell">
  <spell:word distance="10" key-distance="0" word-distance="50" levenshtein-distance="1">coin</spell:word>
</spell:suggestion>
<spell:suggestion original="cohn" dictionary="/my-dictionary.xml" xmlns:spell="http://marklogic.com/xdmp/spell">
  <spell:word distance="10" key-distance="0" word-distance="50" levenshtein-distance="1">conn</spell:word>
</spell:suggestion>
<spell:suggestion original="cohn" dictionary="/my-dictionary.xml" xmlns:spell="http://marklogic.com/xdmp/spell">
  <spell:word distance="9" key-distance="1" word-distance="45" levenshtein-distance="1">crohn</spell:word>
</spell:suggestion>

第三个结果的距离为 9,小于前两个结果的距离为 10。排序是否有错误?

标签: marklogic

解决方案


主排序键是 Levenshtein 距离,然后是键距离,然后是单词距离。

这里所有的 Levenshtein 距离都是 1,前两个的关键距离是 0,所以这就是为什么它们领先于最后一个。


推荐阅读