我有一个表,行数不多,列数也不多。我正在对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 < / strong>即可。 (注意这是上面的复数)
显然我需要实现部分搜索,或类似的东西 但是我该如何实现这样的搜索呢?有没有更好的方法来对用户输入进行整个表搜索?
请提及我做错的事情。
编辑:在每个单词后添加*,现在我也可以搜索 abcde ,但上述问题仍然存在。
答案 0 :(得分:1)
你的意思是你没有得到3个字母组合的结果?如果是这样,您可能会达到mysql索引长度(通常设置为3)
此处有更多信息 - http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html