语音匹配
语音匹配算法可用于编码标记,以便两个发音相似的不同拼写能够匹配。
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 过滤器。
或者,您可以使用 Phonetic 过滤器 指定 encoder="DoubleMetaphone"
,但请注意,Phonetic 过滤器版本不会提供 Double Metaphone 过滤器为某些标记生成的第二个(“备用”)编码。
使用 Lawrence Philips 的 double metaphone 算法编码标记。请参阅原始文章:http://www.drdobbs.com/the-double-metaphone-search-algorithm/184401251?pgno=2
Metaphone
要在分析器中使用此编码,请使用 Phonetic 过滤器 指定 encoder="Metaphone"
。
使用 Lawrence Philips 的 Metaphone 算法编码标记,该算法在 1990 年 12 月的《计算机语言》杂志上的“Hanging on the Metaphone”一文中进行了描述。
另一个参考资料是 Lawrence Philips 的 Double Metaphone Search Algorithm。
Soundex
要在分析器中使用此编码,请使用 Phonetic 过滤器 指定 encoder="Soundex"
。
使用 Soundex 算法编码标记,该算法用于关联相似的名称,但也可以用作通用方案来查找具有相似音素的单词。
Refined Soundex
要在分析器中使用此编码,请使用 Phonetic 过滤器 指定 encoder="RefinedSoundex"
。
使用 Soundex 算法的改进版本编码标记。
Caverphone
要在分析器中使用此编码,请使用 Phonetic 过滤器 指定 encoder="Caverphone"
。
Caverphone 是奥塔哥大学卡弗舍姆项目创建的一种算法。该算法针对新西兰达尼丁市南部地区的口音进行了优化。
请参阅 http://en.wikipedia.org/wiki/Caverphone 和 Caverphone 2.0 规范:http://caversham.otago.ac.nz/files/working/ctp150804.pdf
Kölner Phonetik,又名科隆语音
要在分析器中使用此编码,请使用 Phonetic 过滤器 指定 encoder="ColognePhonetic"
。
Kölner Phonetik 是 Hans Joachim Postel 于 1969 年发布的一种算法,针对德语进行了优化。
NYSIIS
要在分析器中使用此编码,请使用 Phonetic 过滤器 指定 encoder="Nysiis"
。
NYSIIS 是一种用于关联相似名称的编码,但也可以用作查找具有相似音素的单词的通用方案。