Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru Поиск не смотря на регистр

Поиск не смотря на регистр


     31.05.2014    Общие вопросы по PHP    1400

вопрос
Привет!

Подскажите как сделать чтобы поиск искал (сходства в тексте не смотря на регистр и всякие символы).

Примеры:

Transformers: Fall of Cybertron
Transformers Fall of Cybertron
transformers: fall of cybertron
transformers fall of cybertron


Буду благодарен за помощь.

Ответил: D0Gmatist


В дле поиск изначально идёт без учёта регистра, и вырезаются символы.

Комментарии пользователей (14)

FastFud
50

1599 | 588

FastFud - 31 мая 2014 02:40 - Юзер

Это мне нужно для другого модуля.

D0Gmatist
225

794 | 281

D0Gmatist - 31 мая 2014 02:42 - Местный

$query = $db->safesql( htmlspecialchars ( trim(  strip_tags (convert_unicode( $_POST['query'], $config['charset'] ) ) ), ENT_QUOTES, $config['charset']) );

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

FastFud
50

1599 | 588

FastFud - 31 мая 2014 02:46 - Юзер

я что-то не так понял.

вот часть кода, из BlockPro


if($bp_cfg['search']) {
$bp_cfg['search'] = $db->safesql(trim( str_replace( $not_allow_symbol, '', strip_tags( stripslashes( $bp_cfg['search']) ) ) ) );
            
$mode_one = explode("%", $bp_cfg['search']);

if(count($mode_one) >= 1) $wheres[] = "(p.short_story LIKE '%".$bp_cfg['search']."%' OR p.full_story LIKE '%".$bp_cfg['search']."%' OR p.xfields LIKE '%".$bp_cfg['search']."%' OR p.title LIKE '%".$bp_cfg['search']."%')";    
else $wheres[] = "MATCH(title,short_story,full_story,p.xfields) AGAINST ('".$bp_cfg['search']."')";    
}

dj-avtosh
39

1480 | 391

dj-avtosh - 31 мая 2014 05:30 - шашлычник

Если поиск не полнотекстовый то учёт регистра не ведётся. Это известно пофункции Like в mySQL.

skype: elhan.isaev

FastFud
50

1599 | 588

FastFud - 31 мая 2014 13:08 - Юзер

как раз, он то полнотекстовой )

dj-avtosh
39

1480 | 391

dj-avtosh - 31 мая 2014 13:53 - шашлычник

и что дает? насколько я знаю в DLE индексы поисковые не реализованы? Только ограничение на 4 символа в слове дает. три уже не найдет...

skype: elhan.isaev

dj-avtosh
39

1480 | 391

dj-avtosh - 31 мая 2014 13:54 - шашлычник

Посмотрим в мануал:

Функция MATCH() выполняет поиск в естественном языке, сравнивая строку с содержимым текста (совокупность одного или более столбцов, включенных в индекс FULLTEXT). Строка поиска задается как аргумент в выражении AGAINST(). Поиск выполняется без учета регистра символов. Для каждой строки столбца в заданной таблице команда MATCH() возвращает величину релевантности, т.е. степень сходства между строкой поиска и текстом, содержащимся в данной строке указанного в списке оператора MATCH() столбца.

skype: elhan.isaev

FastFud
50

1599 | 588

FastFud - 31 мая 2014 14:44 - Юзер

Сложно это все...

dj-avtosh
39

1480 | 391

dj-avtosh - 31 мая 2014 15:06 - шашлычник

регистр не учитывается, в чем ваша проблема? Давайте в icq обсудим.

skype: elhan.isaev

FastFud
50

1599 | 588

FastFud - 31 мая 2014 15:25 - Юзер

Проблема в том что когда пользователь просматривает новость:

Transformers: Fall of Cybertron

то blockpro (поиск не находит)

Transformers Fall of Cybertron

И также если сделать на оборот

Когда просматриваешь новость Transformers Fall of Cybertron

Поиск в bp не находит Transformers: Fall of Cybertron а находит лишь если в точьности будет совпадение, без :

FastFud
50

1599 | 588

FastFud - 31 мая 2014 15:30 - Юзер

Нужно чтобы поиск не обращал внимание на всякие символы типа : [] в названии .

FastFud
50

1599 | 588

FastFud - 31 мая 2014 17:25 - Юзер

Выходит что нельзя сделать?

FastFud
50

1599 | 588

FastFud - 31 мая 2014 17:47 - Юзер

Разобрался.

DaivZ
2

283 | 175

DaivZ - 31 мая 2014 20:43 - Юзер

И нам подскажи )

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы