我在我的数据库表引擎类型中使用FullText
搜索是.MySQL
MyISAM
现在的问题是,如果他们输入了三个单词,我想允许使用搜索记录。
但问题是FullText
不允许我搜索少于 4 个字符的记录。
我知道我可以进行更改
ft_min_word_len
以使其正常工作,但是当我上传它时,我需要在服务器上进行更改,而且我使用的是共享主机,所以很难。
那么我怎样才能让它在 mysql Query 中工作。
我认为当 word 少于 4 个字符 useLIKE
子句并且当它大于 4 个 use 时fulltext
,这是正确的方法吗?
代码
App::import('Sanitize');
if(strlen($this->params['named']['q']) <= 4)
{
$lessWord = "+".$this->params['named']['q'];
}
else
{
$lessWord = $this->params['named']['q'];
}
$escapedQuery = str_replace(" ","* ",Sanitize::escape($lessWord)).'*';
array_push($this->paginate['conditions'],"MATCH(ServiceRequest.title, ServiceRequest.description) AGAINST ('".$escapedQuery."' IN BOOLEAN MODE)");
$this->paginate['fields'] = array
(
'*',
"MATCH(ServiceRequest.title, ServiceRequest.description) AGAINST ('".$escapedQuery."' IN BOOLEAN MODE) AS score"
);
$this->paginate['order'] = "score DESC";
我已经使用了上面的代码。
是否可以搜索三个字符?
我也尝试过+str*
,但现在仍在工作。