Скрипт поиска на PHP

Евгений21 год в сервисе
Данные заказчика будут вам доступны после подачи заявки
31.10.2007

Нужен скрипт поиска на PHP для софтового портала.

Скрипт будет производить поиск программ по базе mysql.

Алгоритм работы скрипта:

word – поисковое слово или фраза.

Поиск производится в кратком описании программ desc_small, полном описании description и в названии name.

Скрипт должен поддерживать 2 языка – русский и английский.

Язык сайта – это переменная $LANG_NOW – ru или en.

А также есть переменная $V_PREF для переменных, ее значение:

$V_PREF = ($LANG_NOW=="en") ? "_en" : "";

Т.е. так пишутся переменные: $row[‘name’.$V_PREF], $row[‘version’.$V_PREF] и т.п.

Еще в базе есть поле my_lang:

0 - программа имеет только русское описание;

1 - только английское;

2 - и русское и английские.

Т.е. при поиске на русском языке ищем только среди программ где: my_lang!=1, а на английском my_lang>0.

Строку поиска нужно проверять: длина от 2 до 64 символов.

А также очищать от ненужных символов.

Еще при поиске нужно исключать некоторые слова, например: номера версий и слова: alpha, beta, free, pro, lite и т.п (лучше чтобы эти слова задавались в виде массива в конфиге и я мог добавлять новые слова).

Настройки поиска:

1) Поиск каждого слова из фразы, поиск фразы целиком.

2) Поиск в названии, поиск в описании, везде.

При поиске каждого слова фразы – искать не более 5 слов.

Результаты поиска (названия программ с найденными фразами) выводить в виде анонса в начале страницы, если спец. флажок ($SHOW_ANOUNCE2) включен.

А также результаты поиска (названия с версиями программ) записывать (через пробел) в переменные:

$keywords (без версий) и $descript (с версиями).

Результаты поиска выводятся в следующем порядке:

1) Результаты с word в начале названия.

2) Результаты с word в середине и конце названия.

3) Результаты с word в описании.

Если word найдено в названии – выводим название и краткое описание программы без подсветки.

Если word найдено в кратком описании – выводим название и краткое описание, а word подсвечиваем красным жирным шрифтом.

Если word найдено в полном описании – выводим название и куски полного описания программы в следующем формате:

Текст…word…текст…word…текст…

Т.е. выводим найденные слова, слева и справа от которых выводится по несколько слов из полного описания (кажется такое делается через preg_match).

Длина участков текста между словами word задается в конфиге.

Поиск производится по релевантности – т.е. сначала выдаются самые подходящие результаты, а потом близкие к ним.

Скрипт поиска уже есть, если хотите, то можете переписывать из него.

Но этот скрипт написан очень нерационально и половины описанных функций в нем не нет.

Прошу уделить особое внимаение производительности, т.к. этот скрипт является самым посещаемым и используется на 5 порталах.

Для работы выдам: мой скрипт поиска (поможет ознакомиться с общими принципами ораганизации сайта), структуру таблицы, в которой будет призводиться поиск.

Слушаю ваши предложения по срокам и ценам.

Заявки фрилансеров