2012-06-15 37 views
1

我在多語種網站(目前僅限英語和土耳其語)中進行搜索。語言數據庫搜索中的特殊字符

只要訪客使用正確的語言字符,搜索出結果。

例如

  • 對於單詞「Moudle」(英語)喜歡sql查詢的子句就像「%Moudle%」,它工作正常。
  • 對於單詞「modül」(土耳其語)喜歡sql的子句就像「%modül%」,它工作正常。

我的問題是,對於土耳其語,如果我使用「模塊」而不是「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?'); 

回答

4

您可以創建一個字段說normalizedText你要去哪裏,只存儲字符不按你的邏輯重音。

因此,您可以使用不包含重音符號和結果集的字符串在標準化文本上執行搜索。

您可以使用一個方便的PHP WordPress的功能(remove_accents),你的重音字符轉換成非重音字符

+0

它會從上表中給出的轉換工作?因爲我在該表中有很多記錄,而且我無法手動執行。 –

+0

你必須首先製作一個腳本,用非重音字符更新你的normalizedText,然後你可以運行任何查詢 – dynamic

+0

好的謝謝你的回覆,在嘗試這個解決方案後會更新你。 –