# LevenshteinDist - 脚本和图表函数

LevenshteinDist() 返回两个字符串之间的 Levenshtein 距离。它定义为将一个字符串更改为另一个字符串所需的最小单字符编辑次数（插入、删除或替换）。 该函数用于模糊字符串比较。

语法：

LevenshteinDist(text1, text2)

返回数据类型： 整数

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/LevenshteinDist.htm)

#### 示例 - 图表表达式

| 示例 | 结果 |
| --- | --- |
| `LevenshteinDist('Kitten','Sitting')` | 返回 '3' |

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/LevenshteinDist.htm)

#### 图表表达式

概述

打开数据加载编辑器，并将下面的加载脚本添加到新选项卡。

加载脚本包含：

* 

* 数据表中有一个名为`InputText` 的字段。

加载脚本

```
Example: 
Load * inline [ 
InputText
Sliver
SSiver 
SSiveer 
]; 
```

结果

加载数据并打开工作表。创建新表并将该字段添加为维度：

* `InputText`

* `=LevenshteinDist('Silver', InputText)`，用于计算将 `InputText` 的字符串值更改为单词 `'Silver'` 所需的最小单字符编辑次数。

结果表

| InputText | LevenshteinDist(‘Silver’, InputText) |
| --- | --- |
| Sliver | 2 |
| SSiveer | 3 |
| SSiver | 2 |

`LevenshteinDist` 函数的输出返回将 `InputText` 更改为预期文本 'Silver' 所需的更改次数。例如，第一行需要两次更改才能将单词 'Sliver' 修改为 'Silver'。第二行需要 3 个更改：1) 删除多余的字符 'S'。2) 删除多余的字符 'e'。3) 插入新字符 'l'。

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/LevenshteinDist.htm)

#### 图表表达式

概述

此示例整合了来自不同系统的产品名称。由于拼写错误、缩写、间距或其他变化，产品名称并不总是使用相同的拼写。使用 `LevenshteinDist` 函数，您可以测量两个产品名称之间的相似性，并确定哪些名称可能指代同一产品，即使名称不完全相同。

打开数据加载编辑器，并将下面的加载脚本添加到新选项卡。

加载脚本包含：

* 

* 

  * `ProductA`

  * `ProductB`

加载脚本

```
Example:
Load * inline [ 
ProductA, ProductB
Coca Cola 330ml, CocaCola 330 ml
Pepsi 500 ml, Pepsi 500ml
Sprite Zero 600 ml, SpriteZero600ml
Red Bull 250ml, Redbull 250ml
]; 
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* `ProductA`

* `ProductB`

* `=LevenshteinDist(ProductA, ProductB)`，用于计算将 `ProductB` 的字符串值更改以匹配 `ProductA` 所需的最小单字符编辑次数。

结果表

| ProductA | ProductB | LevenshteinDist(ProductA, ProductB) |
| --- | --- | --- |
| Coca Cola 330ml | CocaCola 330 ml | 2 |
| Pepsi 500 ml | Pepsi 500ml | 1 |
| Red Bull 250ml | Redbull 250ml | 2 |
| Sprite Zero 600 ml | SpriteZero600ml | 3 |

编辑距离是一种模糊匹配，在客户数据管理、库存系统和文档处理等领域被广泛用作拼写检查器、光学字符识别和校正系统的一部分，在这些领域，文本的细微变化经常发生。

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/LevenshteinDist.htm)

#### 示例：加载脚本

加载脚本

```
T1:
Load *, recno() as ID;
Load 'Silver' as String_1,* inline [
String_2
Sliver
SSiver
SSiveer ];

T1:
Load *, recno()+3 as ID;
Load 'Gold' as String_1,* inline [
String_2
Bold
Bool
Bond ];

T1:
Load *, recno()+6 as ID;
Load 'Ove' as String_1,* inline [
String_2
Ove
Uve
Üve ];

T1:
Load *, recno()+9 as ID;
Load 'ABC' as String_1,* inline [
String_2
DEFG
abc
ビビビ ];

set nullinterpret = '<NULL>';
T1:
Load *, recno()+12 as ID;
Load 'X' as String_1,* inline [
String_2
''
<NULL>
1 ];

R1:
Load 
ID, 
String_1, 
String_2, 
LevenshteinDist(String_1, String_2) as LevenshteinDistance 
resident T1;

Drop table T1;
```

结果

| ID | String\_1 | String\_2 | LevenshteinDistance |
| --- | --- | --- | --- |
| 1 | Silver | Sliver | 2 |
| 2 | Silver | SSiver | 2 |
| 3 | Silver | SSiveer | 3 |
| 4 | Gold | Bold | 1 |
| 5 | Gold | Bool | 3 |
| 6 | Gold | Bond | 2 |
| 7 | Ove | Ove | 0 |
| 8 | Ove | Uve | 1 |
| 9 | Ove | Üve | 1 |
| 10 | ABC | DEFG | 4 |
| 11 | ABC | abc | 3 |
| 12 | ABC | ビビビ | 3 |
| 13 | X |  | 1 |
| 14 | X | - | 1 |
| 15 | X | 1 | 1 |