2012-03-09 73 views
0

我有一张表,没有多少行,也没有多少列。我正在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。 (注意这是上面的复数)

显然我需要实现部分搜索,或类似的东西。
但是,我如何实现这样的搜索?任何更好的方式来做用户输入的整个表格搜索?

请提及我做错了什么。

编辑:通过每一个字后加*,现在我能还搜索ABCDE,但上述问题依然存在。

回答

1

你的意思是你没有得到3个字母组合的结果?如果是的话,你可能会被击中MySQL索引的长度(通常为3)

更多资讯 - http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

+0

是的,看起来像我面对这样的烦恼。顺便说一句,我认为你提到的那个页面,默认是4个字符而不是3个。我不能碰这个长度。 – 2012-03-09 18:07:47

+0

对不起,是的。查看文档,在conf文件中设置'ft_min_word_len'选项可能会有所帮助。 – JohnP 2012-03-09 18:17:18

相关问题