AliMamed, спасибо за ссылки, не совсем то, что надо (я хочу более сложный поиск сделать), но прочитать было полезно и интересно.
Maniac, первая ссылка не катит, вторая то что надо, вот только не знаю кто выкладывал этот диплом, но "Конструкторская часть" зажал, а это как раз самое интересное:-). К моему глубочайшему удивлению в "использованная литература", есть действительно неплохие ссылки, СПАСИБО!
Если у кого чего есть ещё по этому поводу, кидайте, плиZZZZZ.
А я пока поразмышляю вслух, может кому интересно будет:-), большая просьба поправлять и дополнять.
Ну значит так. С тем, где ищем, будем считать определились.
I. Создаём индекс. (я решил создавать текстовой файл, но потом без проблем можно будет переделать и в MySQL и т.д.).
а) необходимо создать следующие файлы:
1. title.txt
2. description.txt
3. keywords.txt
4. time.txt
5. name.txt
6. text.txt
7. all.txt (здесь будут собираться записи со всех мест, дабы организовать поиск по ревалентности вне зависимости от места в документе)
Создаём цикл, в нём будем обрабатываться инфа из каждого индексируемого файла.
Регулярными выраженниями вытаскиваем следующее:
1)
заголовок(теги естественно отбрасываем), обработка функциеей ochistka() о ней чуть позже, получаем на выходе массив @title.
2) , &ochistka(); получаем хеш %description (слово => ранг, ...)
3) , &ochistka(); получаем на выходе массив @keywords.
4) получаем время, когда был создан файл, &ochistka(); и записываем в $timefile
5) находим все заголовки
, &ochistka(); получаем хеш %name (слово => ранг, ...) (о ранге чуть позже)
6) &ochistka(); получаем на выходе %text (слово => ранг, ...)
конец цикла, запись значений в соответствующие файлы следующим образом:
Например файл title.txt: Файл выглядит следующим образом
слово1
урло1@@@урло2@@@...
слово2
......
Дальше всё понятно, не забываем только учитывать, что данное слово уже может быть в индексе, тогда прсто добавим новый урл.
там где хеши файлы выглядят по другому:
слово1
урло1@@@ранг@@@...
слово2
......
И т.д., а теперь главное: функция ochistka()
в функцию, в качестве параметров будет передаваться следующая инфа:
тип данных (заголовок, текст и т.д.)
сосбственно содержание на обработку.
В зависимости от этого и будет обрабатываться, ну рассматривать уже регулярные выражения не буду, предположим всё у нас ок, теги удалили, дальше удаляем, комментарии, всё что находиться до тега , удаляем знаки препинания, частицы и вообще слова короче трёх букв, убираем все циферки, записываем каждое слово в массив, проверяем нет ли в нём суффикса "-СЯ", "-СЬ", или приставок "НЕ-", "НИ-", если есть отсекаем нафиг, больше я ничего не придумал, чтобы можно было отсечь, проверяем если нужно на повторения, и подсчитываем количество повторений, делим на общее количество слов, получаем ранг, записываем всё в соответствующий хеш или обычный массив, и финита ла комедия:-)
ЗЫ. Конечно это получиться не совсем Яндекс:-))) Морфологическим и синтетическим анализом тут и не пахнет...
ЗЫЗЫ. Если у кого есть идеи, замечания, пинайте на здоровье, только аргументированно...