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

Ody*_*dys 4 c# algorithm search .net-3.5

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

映射示例:

a = ?, ?
b = ?
i = ?,?,?,?
... (etc)
u = ??, ??
Run Code Online (Sandbox Code Playgroud)

所以在abu列表中搜索使用

  • αbu
  • abού
  • αού(所有希腊字符)

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

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

om-*_*nom 7

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

在伪代码中:

int func(String latinStr, String greekStr) {
   String mappedStr = convertToLatin(greekStr); // e.g. now ?? would be ab 
   return Levenstein(latinStr, mappedStr);
}
Run Code Online (Sandbox Code Playgroud)

并且convertToLatin你可以逐个符号地用字符串请求字典替换并构造新的字符串