Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > FULLTEXT поиск по коротким словам


Автор: Raily 22.6.2012, 11:48
Всем привет! У меня такой вопрос - делаю полнотекстовый поиск FULLTEXT. Сначала у меня не искались слова, длина которых была 3 буквы и короче. Проблему решила вставкой строки в my.ini

Код

set-variable = ft_min_word_len=3


Но теперь он ищет и те слова, в которых коичество букв и 2, и 1. Пробовала убрать эту строку - тогда слова из 3-х букв не ищет, а из 2-х и одной - ищет. Вопрос - как сделать так, чтобы слова из 3-х букв находились, а из 2-х и одной - нет? 

Ищу я таким образом: 
Код

$mas_search = explode(" ",$_POST['str_search']);
$str_fulltext = "";
for($i=0;$i<count($mas_search);$i++){
    $str_fulltext .= "+".$mas_search[$i]."* ";
}
        
$rec = "SELECT id,text FROM oplata_banks_unistream WHERE MATCH(text) AGAINST('".$str_fulltext."' IN BOOLEAN MODE)";
$res = $this->db->query($rec)->result();


Я составляю строку со * и +, чтобы поиск происходит по всем введённым в сроку поиска словам и по их частям.

Автор: bars80080 22.6.2012, 13:58
Код

$mas_search_len = count($mas_search);
for($i = 0; $i < $mas_search_len; $i++) {
    if(strlen($mas_search[$i]) < 3) { continue; }
    $str_fulltext .= "+".$mas_search[$i]."* ";
}

Автор: Raily 22.6.2012, 14:11
Цитата(bars80080 @ 22.6.2012,  13:58)
Код

$mas_search_len = count($mas_search);
for($i = 0; $i < $mas_search_len; $i++) {
    if(strlen($mas_search[$i]) < 3) { continue; }
    $str_fulltext .= "+".$mas_search[$i]."* ";
}

Спасибо, так я знаю, что можно сделать, но мне интересно, что я не так делаю с ft_min_word_len, что она у меня как-то криво работает. Или она должна так работать, просто я не знаю всех её особенностей?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)