Справочники, инструменты, документация

JavaScript: Поиск без базы данных

Очень полезный скрипт для тех, кто не хочет писать серверные сценарии (например, на PHP или Perl), не хочет связываться с базами данных, выборками и подобными серверными прелестями.

Можно сделать поиск по ключевым словам своего сайта исключительно на Javascript, причем это будет именно клиентский сценарий. Для правильной работы сценария Вам нужно аккуратно добавить в сценарий адреса файлов, правильные названия и пути Ваших веб-страниц, которые Вы хотите отразить, ключевые слова (вместо приведенных примеров) для каждой из страниц в любом их разумном количестве. Итоговый объем Вашего сценария должен быть реальным.

<script type="text/javascript" language="javascript" src="seach.js"></script>
<form method="get" action="javascript:void(0)" onsubmit="search(this); return false;">
<input type="text" id="srchval" value="">
<input type="submit" value="Поиск">
</form>

Сценариq seach.js:

var item = new Array();
 /* Добавьте здесь столько страниц и слов, сколько требуется для поиска Ключевых Слов */
 // "имя файла","папки путь","Название Страницы","Очень,Много,Ключевых,Слов","Описание страницы"

 c=0; item[c]=new Array("index.html","","Стартовая страница","index,основная,стартовая","Демонстрация поискового механизма для сайта.");
 c++; item[c]=new Array("about.htm","","Обо мне","об,автор,контакты,email,кто","Контактная информация с автором страницы.");
 c++; item[c]=new Array("links.htm","","Ссылки","ссылки,больше,где,похожее,друзья","Ссылки на сайты.");
 c++; item[c]=new Array("main.htm","main/","Основная страница","содержание,основная,фокус","Основная страница сайта.");
 c++; item[c]=new Array("logo.jpg","main/images/","Значок","ссылка,рисунок,картинка,графика","Картинка.");

 page="<h3>Результаты поиска</h3><table border=0 cellspacing=10 width=80%>";

 function search(frm) {
 win = window.open("","","");
 win.document.write(page);
 txt = frm.srchval.value.split(" ");
 fnd = new Array(); total=0;
 for (i = 0; i < item.length; i++) {
 fnd[i] = 0; order = new Array(0, 4, 2, 3);
 for (j = 0; j < order.length; j++)
 for (k = 0; k < txt.length; k++)
 if (item[i][order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != "")
 fnd[i] += (j+1);
 }
 for (i = 0; i < fnd.length; i++) {
 n = 0; w = -1;
 for (j = 0;j < fnd.length; j++)
 if (fnd[j] > n) { n = fnd[j]; w = j; };
 if (w > -1) total += show(w, win, n);
 fnd[w] = 0;
 }
 win.document.write("</table><br>Всего найдено: "+total+"<br>");
 win.document.close();
 }
 function show(which,wind,num) {
 link = item[which][1] + item[which][0];
 line = "<tr><td><a href='"+link+"'>"+item[which][2]+"</a> Совпадений: "+num+"<br>";
 line += item[which][4] + "<br>"+link+"</td></tr>";
 wind.document.write(line);
 return 1;
 }