擅长:python、mysql、java
<p>如果选择使用BigQuery解决此问题,则以下是备选解决方案:</p>
<ol>
<li><p>将所有可能的英语单词列表加载到名为<code>words</code>的表中。例如,<a href="https://github.com/dwyl/english-words" rel="nofollow">https://github.com/dwyl/english-words</a>有大约350000个单词的列表。互联网上也有其他免费的数据集(如WordNet)。</p></li>
<li><p>使用标准SQL,对候选列表运行以下查询:</p></li>
</ol>
<p><code>SELECT first, second FROM (
SELECT word AS first, SUBSTR(candidate, LENGTH(word) + 1) AS second
FROM dataset.words
CROSS JOIN (
SELECT candidate
FROM UNNEST(["longstring", "googlecloud", "helloxiuhiewuh"]) candidate)
WHERE STARTS_WITH(candidate, word))
WHERE second IN (SELECT word FROM dataset.words)</code></p>
<p>在本例中,它产生:</p>
<pre><code>Row first second
1 long string
2 google cloud
</code></pre>
<p>即使是非常大的英文单词列表也只有几MB,所以这个查询的成本是最小的。第一次1 TB扫描是免费的-这对于2 MB表上大约500000次扫描来说已经足够了。在那之后,每次额外的扫描是0.001美分。你知道吗</p>