php:改进我的搜索结果

时间:2011-11-10 16:41:41

标签: php

我的网站上有搜索功能。

嗯,无论如何,我的网站上有这样的文字:“č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搜索的“你的意思是等等吗?”当搜索没有返回时。

无论如何理解?对不起,我的英文不好

非常感谢,

3 个答案:

答案 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”。