音标匹配
可以使用音标匹配算法对标记进行编码,以便发音相似的两种不同拼写匹配。
Beider-Morse 音标匹配 (BMPM)
有关如何在分析器中使用此编码的示例,请参阅筛选描述部分中的 Beider Morse 筛选器。
Beider-Morse 音标匹配 (BMPM) 是一种“听起来像”工具,它允许您使用新的音标匹配系统进行搜索。BMPM 帮助您在 Solr 索引中搜索人名(或仅姓氏),并且远远优于现有的音标编解码器,例如常规 soundex、metaphone、caverphone 等。
通常,音标匹配允许您在名称列表中搜索与所需名称在音标上等效的名称。BMPM 类似于 soundex 搜索,因为它不需要精确的拼写。与 soundex 不同,它不会产生大量的错误命中。
BMPM 尝试根据名称的拼写来确定语言。然后,它应用特定语言的音标规则将名称音译成音标字母。如果无法以相当的确定性确定语言,它将使用通用音标代替。最后,它应用与清浊辅音和元音等相关的语言无关的规则,以进一步确保匹配的可靠性。
例如,假设在数据库中搜索 Stephen 时找到的匹配项为“Stefan”、“Steph”、“Stephen”、“Steve”、“Steven”、“Stove”和“Stuffin”。“Stefan”、“Stephen”和“Steven”可能是相关的,是您要看到的名称。“Stuffin”可能无关。此外,还拒绝了“Steph”、“Steve”和“Stove”。其中,“Stove”可能不是我们想要的。“Steph”和“Steve”可能是您可能感兴趣的名称。
对于 Solr,BMPM 搜索可用于以下语言
-
英语
-
法语
-
德语
-
希腊语
-
用希伯来字母书写的希伯来语
-
匈牙利语
-
意大利语
-
波兰语
-
罗马尼亚语
-
用西里尔字母书写的俄语
-
转写成英文字母的俄语
-
西班牙语
-
土耳其语
名称匹配也适用于使用这些语言的国家的非犹太姓氏。
Daitch-Mokotoff Soundex
要在分析器中使用此编码,请参阅“过滤器说明”部分中的 Daitch-Mokotoff Soundex 过滤器。
Daitch-Mokotoff Soundex 算法是对 Russel 和 American Soundex 算法的改进,在匹配发音相似但拼写不同的斯拉夫语和意第绪语姓氏方面具有更高的准确性。
与其他 soundex 变体相比,主要区别在于
-
编码的名称长度为 6 位数字
-
编码了名称的第一个字符
-
编码多字符 n-gram 的规则
-
同一个名称有多种可能的编码(分支)
注意:Solr 使用的实现(commons-codec 的 DaitchMokotoffSoundex
)与算法的原始说明相比,具有额外的分支规则。
Double Metaphone
要在分析器中使用此编码,请参阅“过滤器说明”部分中的 Double Metaphone 过滤器。
或者,你可以使用 音标过滤器 指定 encoder="DoubleMetaphone"
,但请注意,对于某些标记,音标过滤器版本不会提供 Double Metaphone 过滤器生成的第二个(“备用”)编码。
使用 Lawrence Philips 的 double metaphone 算法对标记进行编码。请参阅 http://www.drdobbs.com/the-double-metaphone-search-algorithm/184401251?pgno=2 上的原始文章。
Soundex
要在分析器中使用此编码,请使用 音标过滤器 指定 encoder="Soundex"
。
使用 Soundex 算法对标记进行编码,该算法用于关联相似名称,但也可以用作查找具有相似音素的单词的通用方案。
Refined Soundex
要在分析器中使用此编码,请使用 音标过滤器 指定 encoder="RefinedSoundex"
。
使用 Soundex 算法的改进版本对标记进行编码。
Caverphone
要在分析器中使用此编码,请使用 音标过滤器 指定 encoder="Caverphone"
。
Caverphone 是奥塔哥大学 Caversham 项目创建的一种算法。该算法针对新西兰但尼丁市南部存在的口音进行了优化。
请参阅 http://en.wikipedia.org/wiki/Caverphone 和 http://caversham.otago.ac.nz/files/working/ctp150804.pdf 上的 Caverphone 2.0 规范。
Kölner Phonetik 又称 Cologne Phonetic
要在分析器中使用此编码,请使用 音标过滤器 指定 encoder="ColognePhonetic"
。
Kölner Phonetik 是一种由 Hans Joachim Postel 于 1969 年发布的算法,针对德语进行了优化。
NYSIIS
要在分析器中使用此编码,请使用 音标过滤器 指定 encoder="Nysiis"
。
NYSIIS 是一种用于关联相似名称的编码,但也可以用作查找具有相似音素的单词的通用方案。