我在我的网站上有一个搜索功能。
不管怎样,在我的网站上有这样的文字:"čurti“"čuožžut”等等……
问题是,当用户使用"curti“而不是"čurti”进行搜索时,应该会找到该页面。
下面是一些有助于理解的代码:
$search = trim(mysql_escape_string($_POST["search"]));
$result = mysql_query("SELECT * FROM wt_pagesearchwords WHERE word='$search'");你可以看到这个部分:word='$search'...因此,如果用户使用wordčurti进行搜索,结果将如下所示:
$search = čurti;
$result = mysql_query("SELECT * FROM wt_pagesearchwords WHERE word='čurti'");但这还不够。我需要它来把čurti转换成curti...
详细问题:我有一个只有1个搜索词的空页面,它是čurti…但是如果用户使用curti搜索,它也应该找到čurti,尽管它的拼写是另一种方式...
这个问题很像谷歌搜索的“你的意思是废话吗?”当搜索未返回任何内容时。
不管怎样,明白了吗?对不起,我的英语不好
不管怎样,谢谢你,
发布于 2011-11-11 00:49:11
您还可以将规范化的单词添加到您的搜索表中,而不是执行Did you mean。
这样,无论是通过čurti还是curti搜索页面,都能找到该页面。
您可以使用iconv来执行以下操作:
$text = iconv('utf-8', 'us-ascii//IGNORE//TRANSLIT', $text);或者,您可以添加一个wt_pagesearchwords_normalized字段,用于保存规范化的键区。
现在,如果没有出现搜索结果,如果您搜索字段wt_pagesearchwords,您可以在wt_pagesearchwords_normalized字段中搜索您的意思是什么。
发布于 2011-11-11 00:47:38
您的数据库需要配置正确的字符集和正确的排序规则,这样它才能知道哪些字符被认为是等价的。
你的问题可能是this one的副本。
发布于 2011-11-11 02:30:38
您可以将排序规则表字段'search‘更新为'utf8_general_ci’。
https://stackoverflow.com/questions/8083063
复制相似问题