Пока я придерживаюсь своей первоначальной идеи, если только у кого-то нет лучшего подхода, не связанного с ft_min_word_len
. (Если бы я мог использовать это на уровне каждой базы данных, я мог бы рассмотреть это - но в противном случае это слишком далеко.)
У меня есть такая функция:
$query = str_replace(array(',', '.'), '', $query);
$terms = explode(' ', $query);
$short = '';
foreach($terms as $term){
if(strlen($term) == 3){
$short .= '"'.$term.'", ';
}
}
if(!empty($short)){
$short = trim($short, ', ');
}
return $short;
А затем я использую возвращенную строку для поиска в столбце title
: WHERE title IN ($short)
, чтобы дополнить полнотекстовый поиск. Я произвольно назначаю оценку 3,5, чтобы возвращаемые записи могли быть отсортированы вместе с другими хитами полнотекстового поиска (я выбрал относительно высокую оценку, поскольку она точно соответствует title
записи).
Это не очень элегантно для меня, но решает проблему.