听起来像是在marklogic中搜索

听起来像是在marklogic中搜索,marklogic,Marklogic,marklogic是否可以选择在文档中查找听起来像查询文本中的词的搜索 我在上面找不到任何东西。所以我试着用spell:levenshtein distance结合cts:tokenize和cts:words制作我自己的,你可以在这里查看 但这确实给了我想要的。。它给我的只是拼写相近的单词。关于如何做的想法听起来像是搜索吗?首先最简单的方法是使用cts:words()根据语料库制作可能的单词词典。然后使用拼写:suggest-detailed()根据查询文本查找相似的匹配项,并限制在一定距离内。

marklogic是否可以选择在文档中查找听起来像查询文本中的词的搜索

我在上面找不到任何东西。所以我试着用spell:levenshtein distance结合cts:tokenize和cts:words制作我自己的,你可以在这里查看


但这确实给了我想要的。。它给我的只是拼写相近的单词。关于如何做的想法听起来像是搜索吗?

首先最简单的方法是使用
cts:words()
根据语料库制作可能的单词词典。然后使用
拼写:suggest-detailed()
根据查询文本查找相似的匹配项,并限制在一定距离内。拼写扩展算法基于双变音,这比Levenshtein更好,因为它是语音的,而且你希望听起来像而不是拼写像。我发现将距离限制在25以内会给你一个不错的模糊度

事先:

spell:insert("dictionary.xml", spell:make-dictionary($word-sequence))
然后(用0.9毫升方言):

定义函数扩展拼写($wordas-xs:string)
as xs:string*
{
让$threshold:=25
let$options:=
{$threshold}
20
对于拼写中的$suggest:suggest detailed(“dictionary.xml,$word,$options)//拼写:word
按$suggest/@word距离订购
返回字符串($suggest)
}
我按距离排序,以便在演示中显示扩展,更接近的匹配项在列表中会更高

define function expand-spell($word as xs:string)
  as xs:string*
{
  let $threshold := 25
  let $options := <options xmlns="http://marklogic.com/xdmp/spell">
                    <distance-threshold>{ $threshold }</distance-threshold>
                    <maximum>20</maximum>
                  </options>
  for $suggest in spell:suggest-detailed("dictionary.xml", $word, $options)//spell:word
  order by $suggest/@word-distance
  return string($suggest)
}