ExBB Community » Файловый ExBB » Решение проблем » Поиск не ищет цифры

Страниц (1): [1]
 

1. team - 16 мая 2009 — 18:33 - перейти к сообщению
У меня поиск почему то не ищет цифры, например делаем тему с названием 1234567890 и пишем в сообщении 1234567890, далее идем в поиск и вводим эти 1234567890, в ответ получаем Не заданы параметры поиска! Либо запрос короче четырёх символов! Здесь на exbb.org проблема такая же.

Как лечить?
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');


и заменяем на
CODE:
$serach = array('/[^0-9a-zA-Zа-яА-ЯёЁ]/is',
'#\b[0-9a-zA-Zа-яА-ЯёЁ]{1,2}\b#is',
'/\s+/s');

Все, теперь поиск ищет и буквы и цифры.
4. yura3d - 17 мая 2009 — 09:07 - перейти к сообщению
team пишет:
В общем проблема решена. Не знаю как скажется на производительности, но все заработало. Если нужно кому, то вот решение.

Молодцы, что сами разобрались. В принципе проблем с нагрузкой и производительностью быть не должно, т.к. индексации будут подвергаться цифро-буквенные комбинации длиной от 3 символов

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0162]     [ ]