在mysql中我们有SOUNDEX()或者我们可以使用SOUNDS LIKE来获取相关/错误的法术或匹配的单词,所以他们的任何东西就像在BIGQUERY

时间:2015-02-12 13:27:26

标签: mysql sql google-app-engine google-bigquery spell-checking

mysql 中我们有

  

SOUNDEX()

  

类似的声音

用于相关/错误拼写或在查询中匹配的单词

BigQuery中有类似的东西吗? BigQuery可以用于此类查询吗?

3 个答案:

答案 0 :(得分:1)

我已经检查了" Google BigQuery Analytics"书,不,BigQuery没有像#34; SOUNDEX()" (至少在出版时)。

您可能想要检查cloudSQL,它是托管在云上的mysql服务器。我知道你可以在cloudSQL中使用mysql的一些函数,但值得研究。

答案 1 :(得分:1)

使用JavaScript中的BigQuery User-Defined Functions (UDF),您可以自己实现SOUNDEX函数。

这是BigQuery的SQL语句,用于计算SOUNDEX:

#standardSQL
CREATE TEMP FUNCTION SOUNDEX(name STRING)
RETURNS STRING
LANGUAGE js AS """
  if (name == null) return null;
  let s = [];
  let si = 1;
  let c;
  //              ABCDEFGHIJKLMNOPQRSTUVWXYZ
  let mappings = "01230120022455012623010202";
  s[0] = name[0].toUpperCase();
  for(let i = 1, l = name.length; i < l; i++) {
    c = (name[i].toUpperCase()).charCodeAt(0) - 65;
    if(c < 0 || c > 25) { continue; }
    if(mappings[c] == '0') { continue; }
    if(mappings[c] != s[si-1]) {
      s[si] = mappings[c];
      si++;
    }
    if(si > 3) { break; }
  }
  if(si <= 3) {
    while(si <= 3) {
      s[si] = '0';
      si++;
    }
  }
  return s.join("");
""";

SELECT SOUNDEX("John Doe"), SOUNDEX("Jon Do")

信用:我从Chris Webb blog发布的here中提取了原始JavaScript代码,并略微更改了编码语法。

答案 2 :(得分:1)

我意识到这个问题是多年前被问到的,但对于那些像我一样在这里寻找答案的人来说,你去吧。

BigQuery 现在有 SOUNDEX()

Here is the documentation