Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FULLTEXT поиск по коротким словам 
:(
    Опции темы
Raily
Дата 22.6.2012, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 25.9.2006

Репутация: нет
Всего: нет



Всем привет! У меня такой вопрос - делаю полнотекстовый поиск 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();


Я составляю строку со * и +, чтобы поиск происходит по всем введённым в сроку поиска словам и по их частям.
PM MAIL   Вверх
bars80080
Дата 22.6.2012, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Код

$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]."* ";
}

PM MAIL WWW   Вверх
Raily
Дата 22.6.2012, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 25.9.2006

Репутация: нет
Всего: нет



Цитата(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, что она у меня как-то криво работает. Или она должна так работать, просто я не знаю всех её особенностей?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1139 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.