带有全文索引的mysql搜索名称

时间:2018-01-22 17:03:11

标签: mysql codeigniter full-text-search

我一直在努力使用MySQL进行全文搜索,但总是遇到一些问题,我有2列first_namelast_name

我的应用程序是基于php codeigniter框架构建的,起初我用mysql LIKE搜索名称。

$this->db->like("CONCAT(TRIM(co.first_name),' ',(co.last_name))", trim($search_firstname.' '.$search_lastname));
像这样搜索的问题是,当有人首先输入姓氏然后输入名字的一半然后搜索返回0结果,例如,如果名称是Arthur Peglow并且当我输入姓氏' peglow'然后输入Art搜索返回0结果。

我决定创建全文索引

ALTER TABLE contacts ADD FULLTEXT INDEX `FullText` (`first_name` ASC, `last_name` ASC);

$this->db->where('MATCH (co.first_name, co.last_name) AGAINST ("'.$search_name.'")', NULL, FALSE);

我面临的第一个问题是,它返回0结果少于3个字符,我通过将ft_min_word_len更改为2来修复此问题,我仍然注意到有时它不会返回任何输入2个字符的结果 问题仍然没有解决,它显示输入最少3个字符时的结果,输入名称'关键字'它并没有以名字' Arthur Peglow'返回记录。但只需返回结果名称' Arth'仅

添加另一个角色' Arthu'返回0结果,输入全名' Arthur'返回预期结果,显然没有返回预期结果

我的问题很清楚,我做错了什么?有什么建议吗?

0 个答案:

没有答案