Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Postgres将内容与基本事实表进行比较_Sql_String_Postgresql_Compare_Levenshtein Distance - Fatal编程技术网

Sql Postgres将内容与基本事实表进行比较

Sql Postgres将内容与基本事实表进行比较,sql,string,postgresql,compare,levenshtein-distance,Sql,String,Postgresql,Compare,Levenshtein Distance,给出了下表(每个表包含约200万个数据集): 电影: | title | genre | price | |***************************|***********|*******| | Bria nsau r us | History | 10.2 | | BoJch o BillyOut6 tt e d | Animation | 10.2 | |M on l igh t on th6 R

给出了下表(每个表包含约200万个数据集):

电影:

|           title           |   genre   | price |
|***************************|***********|*******|
|       Bria nsau r us      |  History  | 10.2  |
|  BoJch o BillyOut6 tt e d | Animation | 10.2  |
|M on l igh t on th6  R ange|  Fantasy  | 10.2  |
|    Pret  a  Teleport er   | Animation | 10.2  |
|           ...             |    ...    |  ...  |
《大地真相》电影:

|           title           |   genre   |
|***************************|***********|
|       Briansaurus         |  History  |
|  Broncho Billy Outwitted  | Animation |
|  Moonlight on the Range   |  Fantasy  |
|     Pret a Teleporter     | Animation |
|           ...             |    ...    |
我的任务是根据ground\u truth\u movie表中的标题清理movie表中的标题

由于电影表中的标题写得完全错误,因此我在本例中发现的最佳比较函数是levenshtein。到目前为止,我拥有以下SQL脚本:

SELECT m.title, (
SELECT g.title
  FROM ground_truth_movie g
  ORDER BY levenshtein(g.title, m.title) ASC, g.title
LIMIT 1
)
FROM movie m
由于这个脚本在缩减的数据集上花费了非常长的时间,所以我考虑以某种方式加快它的速度

是否还有其他概念将专栏与基本事实相比较

我是这个领域的新手,我认为我的第一次尝试并不是最好的;)


感谢您的帮助

通过“200万数据集”,您的意思是每个表中有200万行吗?如果不是,您能说出数据集的大致大小吗?您是否可以选择在DB之外处理数据集,然后单独更新它?能够将所有内容加载到内存中,可以使匹配逻辑更灵活,性能更高。假设你至少可以指望第一个角色是准确的,你可以从该角色开始对电影的子选择进行排序(显然,有一个索引会有帮助)。你能给出一些有代表性的数据示例吗?你尝试了一个合适的连接吗<代码>从电影m中选择m.title,g.title加入地面\u真相\u levenshtein上的电影g(g.title,m.title)<2(用您需要的阈值替换
<2
)@wumpz:刚刚为问题添加了一些演示数据above@barry:是,每个表中有200万行。导出数据不是一个好主意,因为这对我的记忆来说太大了。无论如何谢谢你
SELECT m.title, (
SELECT g.title
  FROM ground_truth_movie g
  ORDER BY levenshtein(g.title, m.title) ASC, g.title
LIMIT 1
)
FROM movie m