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

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


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

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

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

Примеры:

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

1479 | 390

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

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

skype: elhan.isaev

FastFud
50

1599 | 588

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

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

dj-avtosh
39

1479 | 390

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

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

skype: elhan.isaev

dj-avtosh
39

1479 | 390

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

1479 | 390

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 - Юзер

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

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

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