我是一个社区驱动网站的开发人员/设计师:http://www.thegamesdb.net
我们的问题是非常直接的:
Pac-Man是网站上的一款游戏。一个人应该能够搜索"pacman“或"pac man”,并显示"Pac-Man“的结果。目前,这种情况并没有发生。
搜索代码片段在下面,但是完整的代码可以在:http://code.google.com/p/thegamesdb/source/browse/trunk/tab_listseries.php上看到
if ($function == 'Search')
{
$query = "SELECT g.*, p.name FROM games as g, platforms as p WHERE GameTitle LIKE '%$string%' and g.Platform = p.id";
if(!empty($sortBy))
{
$query .= " ORDER BY $sortBy, GameTitle ASC";
}
else
{
$query .= " ORDER BY GameTitle";
}
}我不太熟悉编码搜索技术,所以如果能提供任何帮助,我们将不胜感激.我试着在网上搜索,我发现的只是一些预先制作好的网站搜索引擎。我们真的不想走这条路..。对我们的需求来说有点过分了。
期待着一些讨论,
亚历克斯
发布于 2011-07-18 20:09:47
MySQL有一个名为“声音类似”的字符串比较功能。这可能是一个很好的用例。
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#operator_sounds-like
您可能会这样修改:
SELECT * FROM blah WHERE SOUNDEX(column) LIKE CONCAT('%', SOUNDEX($search_string), '%')发布于 2011-07-18 19:52:49
最终,您需要决定如何执行模糊匹配。
对于您的例子--您可以考虑删除所有空白和任何“-”字符,然后执行like '%$string%' match。您还可以考虑UPPER在LIKE的两边。
你可以或多或少地用自己的方式来决定模糊性。
https://stackoverflow.com/questions/6738510
复制相似问题