MySQL中希腊字符的搜索功能

2024-02-17

我有一个古希腊单词的搜索功能(Wearch.nl http://wearch.nl).
旧希腊单词有很多重音,ῦ与ὐ不同,但我希望如果您输入“u”,您会得到ῦ和ὐ(以及其他5个变体)的结果。我正在使用 MySQL 的 LIKE 函数来获取结果。
我可以搜索所有这些,但我希望它可以更短、更快。


如果您能够更改列(或表)的字符集,则将其设置为utf8_general_ci (链接到手册 http://dev.mysql.com/doc/refman/5.1/en/alter-table.html):

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8_general_ci;

使用此字符集(不区分大小写,如_ci),重音字符具有相同的权重(用于的值整理 http://dev.mysql.com/doc/refman/5.1/en/charset-general.html),因此当它们相互比较时返回 true (链接到手册 http://dev.mysql.com/doc/refman/5.0/en/charset-collation-implementations.html):

非 UCA 排序规则具有一对一的关系 从字符代码到权重的映射。 在 MySQL 中,这样的排序规则是 case 不敏感和重音不敏感。 utf8_general_ci 是一个示例:'a', 'A'、'À' 和 'á' 各有不同的含义 字符代码但都有权重 0x0041 并比较是否相等。

mysql> SET NAMES 'utf8' COLLATE 'utf8_general_ci';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT 'a' = 'A', 'a' = 'À', 'a' = 'á';
+-----------+-----------+-----------+
| 'a' = 'A' | 'a' = 'À' | 'a' = 'á' |
+-----------+-----------+-----------+
|         1 |         1 |         1 |
+-----------+-----------+-----------+
1 row in set (0.06 sec)

或者,或者如果您无法以这种方式更改数据库配置,您可以编写一个函数来将重音字符替换为非重音字符(即é -> e)并将其写入专用搜索字段(a全文检索 http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html推荐字段)。在此字段上执行搜索并将带重音符号的字段返回给应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL中希腊字符的搜索功能 的相关文章

随机推荐