具有自定义字符映射的Levenshtein算法

时间:2012-03-22 11:38:38

标签: c# algorithm search .net-3.5

我想使用Levenshtein算法搜索字符串列表。我想实现自定义字符映射,以便键入拉丁字符并在希腊语中搜索项目。

映射示例:

a = α, ά
b = β
i = ι,ί,ΐ,ϊ
... (etc)
u = ου, ού

所以使用

在列表中使用abu进行搜索
  • αbu
  • abού
  • αού(所有希腊字符)

将导致列表中的所有项目。 (项目顺序不是问题)

如何在算法中应用映射? (this是我开始的地方)

1 个答案:

答案 0 :(得分:7)

我认为最好的方法是将符号预处理为一种明确的形式(例如拉丁语中的所有符号)然后像正常情况那样使用Levenshtein。

在伪代码中:

int func(String latinStr, String greekStr) {
   String mappedStr = convertToLatin(greekStr); // e.g. now αβ would be ab 
   return Levenstein(latinStr, mappedStr);
}

convertToLatin中你可以用符号逐个字符地用字母表来寻找替换并构造新的字符串