2016-08-19 2 views
1

Я использую MySql FullText индексирование для поиска данных из базы данных.Mysql FullText index search issue

Вот query

$search_input_text = 'the_string_to_be_search'; 
$searchArray = explode(" ", $search_input_text); 
$query="SELECT * FROM car_details 
     WHERE MATCH (car_trim) AGAINST ('"; 
foreach ($searchArray as $word) { 
    $query .= "+".$word."* "; 
} 
$query .= "' IN BOOLEAN MODE) LIMIT $start, $limit"; 

Запрос выполняется нормально, но у него есть ошибка, если вы посмотрите на название колонке вы найдете car_trim который находится внутри MATCH() функция. У столбца есть только 3 разных типа значений в базе данных, которые являются «T5», «T6» и «T5 premier».

Когда я набираю «» «Премьер» в строке поиска и нажимаю Enter, он выбирает результаты, значения которых содержат слово «Premier». Но когда я печатаю T5 или T6, он возвращает пустую запись. Пожалуйста, убедитесь, что есть много записей с car_trim = «T5», car_trim = «T6» или car_trim = «T5 Premier»

Я не получаю то, что может быть проблема со строками T5 и T6.

ответ

2

У MySQL есть два ключевых параметра при использовании полнотекстового поиска (и несколько других важных). Ключевыми параметрами являются минимальная длина слова и список стоп-слов. Короче говоря, MySQL игнорирует слова, которые составляют менее 3 или 4 символа (в зависимости от механизма хранения) или которые находятся в списке стоп-слов.

Ваши примеры («T5» и «T6») слишком коротки - основаны на параметрах по умолчанию.

Представляют интерес другие параметры конфигурации, такие как максимальная длина слова и символы, которые действительны для слов.

Вы можете изменить параметры для полной индексации текста и перестроить индекс.

Here - хорошее место, чтобы начать понимать это.

+0

Человек никогда не перестает учиться ;-) Одно существо * moi *. –

+0

О, это дело, спасибо @ Гордон за то, что вы меня поняли. –