2017-04-04 4 views
0

アクセントを含むことができるbigqueryのテーブルの中に単語を見つけるために正規表現を構築しようとしています。入力にアクセントがあるかどうか。私はscalaでそれをコーディングしているので、入力はscalaで変換されるか、またはbigqueryの関数を使用して変換できます。私はscala - アクセントを無視するRE2用の正規表現を作成する

r'(?i:s[éèe]r[íìi][éèe]s)' 

で入力を変換することができますが、私はのようなもので、テーブルの列を変換する方が良いと思い

input: serie 
word to find: Séries 

:私は良い解決策は、そのようなものになることができると思います

r'(?i:s[ée]ries)' 

私は第2の状況を解決する方法やそれを解決する良い方法がわかりません。 ありがとうございます

+1

チェックhttp://stackoverflow.com/a/43148949/5221944を望んで - あなたはそこのためのアプローチを採用することができます - これは助けない場合 - あなたのユースケースを明確にしてください - それは十分に明確ではありませんおもう –

答えて

1

私はアクセントを含むことができるbigqueryのテーブルの中に単語を見つけるために正規表現を構築しようとしています。

以下の例で遊ぶので、入力は、BigQueryの標準SQL

#standardSQL 
CREATE TEMP FUNCTION latin2accents(word STRING) AS 
((
    WITH lookups AS (
    SELECT 
    'y,a,e,i,o,u,c,ç,n,æ,œ,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,ø,Ø,Å,Á,À,Â,Ä,È,É,Ê,Ë,Í,Î,Ï,Ì,Ò,Ó,Ô,Ö,Ú,Ù,Û,Ü,Ÿ,Ç,Æ,Œ,ñ' AS accents, 
    'y,a,e,i,o,u,c,c,n,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,o,O,A,A,A,A,A,E,E,E,E,I,I,I,I,O,O,O,O,U,U,U,U,Y,C,AE,OE,n' AS latins 
), pairs AS (
    SELECT accent, latin FROM lookups, 
     UNNEST(SPLIT(accents)) AS accent WITH OFFSET AS p1, 
     UNNEST(SPLIT(latins)) AS latin WITH OFFSET AS p2 
    WHERE p1 = p2 
), map AS (
    SELECT latin, CONCAT('[', STRING_AGG(accent, ''), ']') AS accents 
    FROM pairs 
    GROUP BY latin 
) 
    SELECT CONCAT('(?i:', STRING_AGG(IFNULL(accents, char), ''), ')') 
    FROM UNNEST(SPLIT(word, '')) char 
    LEFT JOIN map 
    ON char = latin 
)); 

WITH yourTable AS (
    SELECT 'Séries' AS word UNION ALL SELECT 'Series' UNION ALL 
    SELECT 'brasília' UNION ALL SELECT 'Niño' UNION ALL SELECT 'aperçu' 
), inputs AS (
    SELECT 'series' AS input UNION ALL SELECT 'Brasilia' UNION ALL 
    SELECT 'nino' UNION ALL SELECT 'apercu' 
) 
SELECT input, word AS found_word 
FROM yourTable CROSS JOIN inputs 
WHERE REGEXP_CONTAINS(word, latin2accents(input)) = TRUE 
ORDER BY input, word 
全体ものを行いScalaで形質転換またはBigQueryの

の機能を使用することができます

出力は(私はあなたは)

input  found_word 
-----  ---------- 
Brasilia brasília  
apercu  aperçu 
nino  Niño  
series  Series 
series  Séries 
関連する問題