【发布时间】:2012-03-09 17:18:46
【问题描述】:
我有一张表,行数不多,列数也不多。我正在对 3 列进行全文搜索。
我的代码是
$search_input = trim($_GET['s']);
$search = mysql_real_escape_string($search_input);
$search = '+'.str_replace(' ', '* +', $search).'*';
$sql = "SELECT * FROM table WHERE
MATCH(def, pqr, xyz) AGAINST ('$search' IN BOOLEAN MODE)";
$result = mysql_query($sql);
我可以正确搜索像 abcdefgh 这样的词,它们以 ...abcdefgh ... 的形式出现。
但是我收到了带有 abc 之类的搜索词的空集,其中表条目中存在诸如 abc-123 之类的内容,以及诸如 abcdefghs。 (注意这是上面的复数)
显然我需要实现部分搜索,或类似的东西。
但是我该如何实现这样的搜索呢?有没有更好的方法来对用户输入进行整个表搜索?
请提及我做错的任何事情。
EDIT :通过在每个单词后添加 *,现在我也可以搜索 abcde,但仍然存在上述问题。
【问题讨论】:
标签: php mysql database full-text-search