NGram Query in SQL Optimize - PullRequest
       7

NGram Query in SQL Optimize

0 голосов
/ 27 сентября 2018

Я пишу SQL-запрос в Teradata TD16.Я пытаюсь сопоставить две сцепленные строки по NGrams (т.е. триграммы - 3-символьные NGrams).Между жалами должна быть хотя бы 1 триграмма.К сожалению, единственный способ сделать это - перекрестное соединение и сопоставление в функции NGram.Есть ли менее ресурсоемкий способ сделать это.

SEL
a.Row_id AS Mstr_Row_Id
,b.Row_id AS Chk_Row_Id
,EditDistance(a.Concant_Addr_Ln_Pc,b.Concant_Addr_Ln_Pc) AS Edit_Distance
,Char_Length(Trim( Both From a.Concant_Addr_Ln_Pc)) AS Char_Len_Test_Addr
,(1.00 * (Char_Len_Test_Addr - Edit_Distance) / NullIfZero(Char_Len_Test_Addr)) *100.00 AS Prcnt

FROM ( SEL * FROM  VT_Addr_Master WHERE grp=1 AND Coalesce(Reliable_Score_1,0)< 100 ) AS a
CROSS JOIN VT_Addr_Check AS b
ON  Ngram(a.N_Gram_Smpl,b.N_Gram_Smpl,3)>0

QUALIFY Row_Number() Over(
PARTITION BY a.Row_id
ORDER BY Prcnt DESC)=1
...