Я использую FullText
Поиск в MySQL
моя таблица базы данных тип двигателя MyISAM
.три символа поиск не работает
Теперь проблема в том, что я хочу разрешить использование для поиска записи, если они ввели три слова.
Но проблема в том, что FullText
не позволяет мне искать запись менее 4 символов.
Я знаю, что я могу изменить
ft_min_word_len
, чтобы заставить его работать, но, когда я буду загружать его мне нужно изменить его на сервере, и я использую общий хост поэтому его трудно.
Так как я могу заставить его работать в запросе mysql.
Я думаю, что когда слово составляет менее 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 для приятного вопроса, ожидая правильного ответа. –