数据库搜索中的语言特殊字符

时间:2012-06-15 10:35:51

标签: php zend-framework utf-8 multilingual

我在多语种网站(目前只有英语和土耳其语)进行搜索。

只要访问者使用正确的语言字符,就会搜索出相应的结果。

e.g。

  • 单词“Moudle”(英文)喜欢sql查询的子句就像“%Moudle%”,它工作正常。
  • 单词“modül”(turkish)喜欢sql的子句就像“%modül%”一样工作正常。

我的问题是,对于土耳其语,如果我使用“modul”而不是“modül”,它就行不通。只是因为“ü”。

即使我使用英语而不是原创的相同字符,我有什么方法可以从数据库中获得结果吗?


表的结构是

CREATE TABLE IF NOT EXISTS post_lang (
  id bigint(20) NOT NULL AUTO_INCREMENT,
  post_id bigint(20) NOT NULL,
  ln enum('en','tr') NOT NULL,
  title text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (id)
);
INSERT INTO post_lang (id, post_id, ln, title, content, doc) VALUES
(1, 1, 'en', 'How can I create a new module?'),
(2, 1, 'tr', 'Nasıl yeni bir modül yaratırım?');

1 个答案:

答案 0 :(得分:4)

你可以创建一个字段normalizedText,在那里你只会存储没有重音符号的字符。

因此,您可以使用不包含重音的字符串对normalizedText运行搜索,并且具有明显的结果。

您可以使用方便的php wordpress功能(remove_accents)将您的重音字符转换为非重音字符