我的网站上有搜索功能。
嗯,无论如何,我的网站上有这样的文字:“čurti”“čuožžut”等等......
问题是,当用户搜索单词“curti”而不是“čurti”时,它应该找到该页面。
一些有助于理解的代码:
$search = trim(mysql_escape_string($_POST["search"]));
$result = mysql_query("SELECT * FROM wt_pagesearchwords WHERE word='$search'");
您可以看到该部分:word='$search'
...因此,如果用户使用单词čurti进行搜索,则会像:
$search = čurti;
$result = mysql_query("SELECT * FROM wt_pagesearchwords WHERE word='čurti'");
但这还不够。我需要它将čurti转换为curti ......
详细问题:我有一个空的单页,只有一个搜索词,它是čurti...但如果用户搜索curti,它也应该找到čurti虽然它拼写在其他方面......
这个问题很像Google搜索的“你的意思是等等吗?”当搜索没有返回时。
无论如何理解?对不起,我的英文不好
非常感谢,
答案 0 :(得分:1)
您也可以将规范化的字词添加到搜索表中,而不是Did you mean
。
以便找到该页面是čurti
还是curti
进行搜索。
您可以使用iconv:
$text = iconv('utf-8', 'us-ascii//IGNORE//TRANSLIT', $text);
或者您可以添加一个wt_pagesearchwords_normalized
字段,其中包含规范化的键盘。
如果您在搜索字段wt_pagesearchwords
时没有搜索结果,则可以在wt_pagesearchwords_normalized
字段中搜索您的意思。
答案 1 :(得分:0)
您的数据库需要配置正确的字符集和正确的排序规则,以便它知道哪些字符被视为等效字符。
您的问题可能与this one重复。
答案 2 :(得分:0)
您可以将“搜索”的排序规则表字段更新为“utf8_general_ci”。