由于 SQLite FTS4/FTS5 tokenizer=unicode61 给了我们:
a=A=ą=Ą=ä=Ä ...
z=ż=ź=Z=Ż=Ź=Ž=ž ...
etc...
为什么不 l=ł=L=Ł ??? 这不是一个错误吗?
如何在没有波兰字符 ł/Ł 的键盘上查询 SQLite?例如查询名称 Żabczyński 像“zabczynski” - 得到结果,但对于名称 Włast 像“wlast” - 0 结果(应该像数百......)我在 PHP 中有我的漫游,但它不适用于带有 l 的单词并在其中使用 ł,例如 'opłacalny'。
<?
$q = $_POST["q"];
//
$pat = '/(\b\w*[lł]\w*\b)/iu';
$q = preg_replace_callback($pat,function($macz){
return "(" . str_replace("ł","l",$macz[1]) . "* OR " . str_replace("l","ł",$macz[1]) . "*)";
},$q);
// so query 'andrzej wlast' looks 'andrzej (wlast* OR włast*)'
...
$sql = "SELECT ...";
$pdo = $db->prepare($sql);
//
$pdo->execute([":q" => "$q*"]);
//
$odp = $pdo->fetchAll(PDO::FETCH_ASSOC);
?>
任何想法?您不能在 sqlite 中设置编码,例如 utf8_general_ci、utf8_polish_ci、utf8_unicode_ci... 或者是的,有可能吗?
有没有办法在 Python 中解决它?平台上没有 ICU(共享服务器)。