InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте







Размещение сквозной ссылки

 

Поиск по HTML-документам


Писать поиск по HTML-документам будет легче, так как основы релевантности мы уже обсудили выше и теперь процесс отбора нужных файлов в хэш можно будет просто скопировать. Выглядеть наша функция будет так:

function query_html ($dir, $q_num, $q_array)

Как параметры она хочет увидеть директорию (папку), в которой производить поиск (поиск по подпапкам не предусмотрен), запрос пользователя и количество слов в запросе пользователя.

После того, как на руках имя папки, с которой нужно работать, эту папку следует открыть.

 $current_dir=opendir($dir);

Таким образом, переменной $current_dir присваивается указатель на открытую папку. Теперь для пробежки по всем файлам в папке мы можем использовать функцию readdir, которая при каждом обращении будет перемещаться вниз по папке, возвращая имя файла. Единственные файлы, которые нам не нужны - это . и .., юниксовские команды для перехода вверх на одну директорию и в корень сервера. Их мы в цикле проигнорируем.

 while ($current_file=readdir($current_dir))
{
if ($current_file=="." || $current_file=="..")
continue;
$fn="$dir"."$current_file";
$filearray = file("$fn");
}

К концу цикла массив $filearray содержит все строки из файла, над которым работается в данный момент.

Для обсчета релевантности воспользуемся теми же переменными, что и в функции query_table.

 $relevancy=0;
$mypage="$current_file";
$mycontent=strtolower(strip_tags(implode (" ", $filearray)));

Разница в переменных в этот раз состоит в том, что в $mypage мы храним имя файла, а не его номер, как это было в случае с таблицей, а переменная $mycontent теперь содержит строку, в которой уместилось все содержание файла - именно это для нас сделала функция implode.

Следующие строки кода скопированы напрямую из предыдущей функции, так как подсчет релевантности и сортировка хэша здесь ничем не отличаются.

 for ($d=0; $d<$q_num; $d++)
{
$relevancy+=substr_count((string)$mycontent, (string)strtolower(strip_tags($q_array[$d])));
}//end of for
if ($relevancy>0)
$res["$mypage"]=$relevancy;
}//end of while
if (count($res)>0)
arsort ($res);
return $res;

При желании этот кусок кода наверняка даже можно выделить в отдельную функцию, прописав вызовы в query_table и query_html.

[Назад][Содержание][Вперед]


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua