【发布时间】:2013-03-19 23:22:36
【问题描述】:
我正在使用FullText 搜索MySQL 我的数据库表引擎类型是MyISAM。
现在的问题是,如果他们输入了三个单词,我想允许使用搜索记录。
但问题是FullText 不允许我搜索少于 4 个字符的记录。
我知道我可以更改
ft_min_word_len以使其正常工作,但是当我上传它时,我需要在服务器上更改它,而且我使用的是共享主机,所以很难。
那么我怎样才能让它在 mysql Query 中工作。
我认为当单词少于 4 个字符时使用 LIKE 子句,当它大于 4 时使用 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*,但现在仍在工作。
【问题讨论】:
-
@Jocelyn 正如我所说,我不想更改该变量...请在阅读之前不要关闭它...
-
@Jocelyn 我已经强调了对您的近距离投票的回应
-
@DipeshParmar +1 提出好问题,等待正确答案。
标签: php mysql full-text-search character-limit