擅长:python、mysql、java
<p>不幸的是,SQLite没有像MySQL那样的排序表,因为它会膨胀一个非常小且可移植的库。在</p>
<p>您可以将查询转换为以下内容:</p>
<pre><code>SELECT * FROM foo WHERE word REGEXP '^[ZŻ]abczy[nń]ski$';
SELECT * FROM foo WHERE word REGEXP '^W[lł]ast$';
</code></pre>
<p>在Python中非常简单:</p>
^{pr2}$
<p>同样不幸的是,这将使我们无法在这些字段上使用索引进行搜索。在</p>
<p>更好的方法是执行相反的操作,“ascifify”字符串,并将它们作为附加列输入到数据库中(有自己的索引!);然后“ascifize”您的查询,并观察它的工作情况。更好的是,查看您的“ascified”查询是否与原始查询相同;如果是,则使用“ascified”列(因为用户只输入ASCII字符);如果它们不同,则用户输入波兰语特定字符,并且可能都正确输入,因此请使用原始列。这样,如果用户输入“Żabczynski”,您将在原始列中搜索“Żabczynski”,并在那里找到它。如果用户输入“Zabczynski”,假设它可能是ascified,并在ascified列中搜索;如果有“Zabczynski”、“Zabczynski”、“Żabczynski”和“Zabczynski”。如果用户输入“zabczynski”或“Żabczynski”,大概他们应该知道波兰语,所以在原始列中搜索,没有返回结果。所有这些胜利都是以只存储一个专栏副本为代价的。在</p>