Другие языки программирования и технологии

Как организовать поиск по сайту?

в общем сабж, при использовании jquery-функции load загружается контент из отдельных php-страниц, нужно осуществить поиск по данным php-страницам, и выводить краткие выдержки из этих страниц с соответствующими ссылками. Мой самостоятельный опыт по написанию jquery-функций равняется 4 скриптам(без учета изменений js-скриптов других товарищей), поэтому не судите за такой вопрос? Сайт работает не на базе данных, но если в поиске поможет, могу поднять, но что занести в базу? Писать проги за меня не надо, а за то, что сможете меня на править на путь истинный, буду благодарна.
Для начала вам надо как-то проиндексировать свои страницы с сайта - посмотреть, какие слова есть на каждой странице и сколько их, отбросить мусорные слова (типа "на" "от" "из"), как-то занести такую табличку вида:
слово1=где_встречается1
слово2=где_встречается2
....
словоN=где_встречаетсяN
и как-то периодически обновлять эту табличку после каждого изменения содержания или с какой-то периодичностью. Обновлять можно вручную или через крон (если он есть на хостинге) .
По запросу пользователя сайта строку поиска отфильтровать (выкинуть спецсимволы, не забывайте про инъекции в код) и посмотреть каждое слово, есть ли оно вообще у вас в табличке, отсортировать по части популярности (те странички, где слово встречается чаще, выводить выше остальных) , Первое слово более весомее и значимее для пользователя, чем второе и т. д.
Про конкретный код:
У вас эта табличка
слово1=где_встречается1
слово2=где_встречается2
....
словоN=где_встречаетсяN
будет в обычном файле (судя по отсутствию БД у вас в вопросе) . Используйте обычный код загрузки из файла в массив, вида
<?PHP
$file_handle = fopen("dictionary.txt", "rb");
while (!feof($file_handle) )
{$line_of_text = fgets($file_handle);
$parts = explode('=', $line_of_text);
//print $parts[0] . $parts[1]. "<BR>"; }
fclose($file_handle);
?>
У вас в $parts[0] и в $parts[1] будет соответственно слово, которое ищут и страницы, где оно встречается (вам надо будет подумать, как ссылки на эти страницы отобразить в строке $parts[1], ведь этих страниц может быть несколько, может быть одна, и заранее это неизвестно) .
Про процесс индексации: вам видимо придется писать какую-то программу и индексировать исходники у себя на компе и заливать на сервер в нужное место файл dictionary.txt с индексацией. Или Придумать себе скрипт, который будет индексировать нужные части нужных файлов и заносить их в dictionary.txt, но без использования БД это наверное весьма нерационально, долго и грозит преждевременным завершением скрипта, если хостер установил ограничения на время работы скрипта и используемые ресурсы.

Updated: строки из файла можно так же прочитать при помощи функции file()
Владимир Кунахов
Владимир Кунахов
79 496
Лучший ответ
просто поставь фильтр установи нужные или напиши сама и объедини сделай вывод да и пропиши