擅长:python、mysql、java
<p><a href="https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm" rel="nofollow">Aho-Corasick algorithm</a>将以线性时间在文档中搜索多个搜索项。它的工作原理是根据搜索词构建一个有限状态自动机,然后通过该自动机运行文档。</p>
<p>所以建立FSA并开始搜索。找到搜索项时,将它们存储在元组数组中(搜索项、位置)。找到所有搜索项后,停止搜索。列表中的最后一项将包含最后找到的搜索项。这就是范围的结束位置。然后在找到的术语列表中向后搜索,直到找到所有术语。</p>
<p>因此,如果你在搜索[“猫”,“狗”,“男孩”,“女孩”],你可能会得到如下信息:</p>
<pre><code>cat - 15
boy - 27
cat - 50
girl - 97
boy - 202
dog - 223
</code></pre>
<p>所以你知道范围的末尾是226,向后搜索你会找到所有四个词,最后一个词是“cat”在第50位。</p>