У меня поиск почему то не ищет цифры, например делаем тему с названием 1234567890 и пишем в сообщении 1234567890, далее идем в поиск и вводим эти 1234567890, в ответ получаем Не заданы параметры поиска! Либо запрос короче четырёх символов! Здесь на exbb.org проблема такая же.
Как лечить?
1. team - 16 мая 2009 — 18:33 - перейти к сообщению
2. yura3d - 16 мая 2009 — 19:13 - перейти к сообщению
team пишет:
У меня поиск почему то не ищет цифры, например делаем тему с названием 1234567890 и пишем в сообщении 1234567890, далее идем в поиск и вводим эти 1234567890, в ответ получаем Не заданы параметры поиска! Либо запрос короче четырёх символов! Здесь на exbb.org проблема такая же.
Как лечить?
Как лечить?
Числа не индексируются поиском, так задумано. Поиск чисел доступен только при поиске в теме
3. team - 16 мая 2009 — 20:01 - перейти к сообщению
yura3d пишет:
Числа не индексируются поиском, так задумано. Поиск чисел доступен только при поиске в теме
Блин, жаль... Для меня это сильно актуально.
(Добавление)
В общем проблема решена. Не знаю как скажется на производительности, но все заработало. Если нужно кому, то вот решение.
Открываем файл search.php
Находим строку
CODE:
preg_match_all('/([^a-zA-Zа-яА-ЯёЁ]|^)([a-zA-Zа-яА-ЯёЁ]{4,})(?![a-zA-Zа-яА-ЯёЁ])/',$fm->input['search_keywords'],$key_words);
и заменяем ее на
CODE:
preg_match_all('/([^0-9a-zA-Zа-яА-ЯёЁ]|^)([0-9a-zA-Zа-яА-ЯёЁ]{4,})(?![0-9a-zA-Zа-яА-ЯёЁ])/',$fm->input['search_keywords'],$key_words);
В этом же файле ищем
CODE:
$entered_word = preg_replace('/([^a-zA-Zа-яА-ЯёЁ]|^)([a-zA-Zа-яА-ЯёЁ]{1,3})(?![a-zA-Zа-яА-ЯёЁ])/', '', $_SEARCH['entered_word']);
и заменяем на
CODE:
$entered_word = preg_replace('/([^0-9a-zA-Zа-яА-ЯёЁ]|^)([0-9a-zA-Zа-яА-ЯёЁ]{1,3})(?![0-9a-zA-Zа-яА-ЯёЁ])/', '', $_SEARCH['entered_word']);
ищем
CODE:
$searchinmessage = sprintf($fm->LANG['YOUSEARCH'],preg_replace('/([^a-zA-Zа-яА-ЯёЁ]|^)([a-zA-Zа-яА-ЯёЁ]{1,3})(?![a-zA-Zа-яА-ЯёЁ])/', '$1<font color="red">$2</font>', $_SEARCH['entered_word']));
заменяем на
CODE:
$searchinmessage = sprintf($fm->LANG['YOUSEARCH'],preg_replace('/([^0-9a-zA-Zа-яА-ЯёЁ]|^)([0-9a-zA-Zа-яА-ЯёЁ]{1,3})(?![0-9a-zA-Zа-яА-ЯёЁ])/', '$1<font color="red">$2</font>', $_SEARCH['entered_word']));
теперь открываем search/search.php
ищем
CODE:
$query = preg_replace('/\b([a-zA-Zа-яА-ЯёЁ\-\+\!]{1,3})\b/', "", $query);
заменяем на
CODE:
$query = preg_replace('/\b([0-9a-zA-Zа-яА-ЯёЁ\-\+\!]{1,3})\b/', "", $query);
ищем
CODE:
$serach = array('/[^a-zA-Zа-яА-ЯёЁ]/is',
'#\b[a-zA-Zа-яА-ЯёЁ]{1,2}\b#is',
'/\s+/s');
'#\b[a-zA-Zа-яА-ЯёЁ]{1,2}\b#is',
'/\s+/s');
и заменяем на
CODE:
$serach = array('/[^0-9a-zA-Zа-яА-ЯёЁ]/is',
'#\b[0-9a-zA-Zа-яА-ЯёЁ]{1,2}\b#is',
'/\s+/s');
'#\b[0-9a-zA-Zа-яА-ЯёЁ]{1,2}\b#is',
'/\s+/s');
Все, теперь поиск ищет и буквы и цифры.
4. yura3d - 17 мая 2009 — 09:07 - перейти к сообщению
team пишет:
В общем проблема решена. Не знаю как скажется на производительности, но все заработало. Если нужно кому, то вот решение.
Молодцы, что сами разобрались. В принципе проблем с нагрузкой и производительностью быть не должно, т.к. индексации будут подвергаться цифро-буквенные комбинации длиной от 3 символов