qualcuno sa dirmi come fare un motore di ricerca per un intero sito che però non sfrutti linguaggi come asp o php????
qualcuno sa dirmi come fare un motore di ricerca per un intero sito che però non sfrutti linguaggi come asp o php????
Senza linguaggi lato server ....
Qualcuno ne aveva proposto uno un po' di tempo fa. Prova a fare una ricerca nel forum o tra gli script.
Ciao
Michele
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Non mi ricordo dove ne come sono riuscito ad averlo, ma sul mio sito c'è un motore di ricerca in js che sfruttando i frame effettua una ricerca in un file .js esterno e visualizza i risultati impostandoli come un motore di ricerca in un linguaggio lato-server.
Ora provo a prenderlo e lo posto.
Questa è la pagina principale che contiene i frame:
=================
<html>
<head>
<title>Cerca nel sito</title>
</head>
<frameset rows="80,*" border="0">
<frame src="nav.html" name="alto">
<frame src="help.html" name="bot" target="_top">
</frameset>
</frameset>
<body>
</body>
</html>
====================
Nel frame di sopra va il codice vero e proprio e va richiamato il file .js esterno:
======================
<script language="javascript" src="../_files/db.js"></script>
<script language="javascript">
var tutti = "_and"
var alcuni = "_or"
var tipo_ricerca = ""
var s = 0
var o = 10
var copia_risultati = new Array()
var doc = parent.frames[2].document
function filtro (query) {
if (query.charAt(0) == "+")
{
query = query.substring (1, query.length)
tipo_ricerca = tutti
}
else
{
tipo_ricerca = alcuni
}
while (query.charAt(0) == " ") query = query.substring(1, query.length)
document.forms[0]._query.value = query
while (query.charAt(query.length - 1) == " ") query = query.substring(0, query.length - 1)
document.forms[0]._query.value = query
formatta_stringa (query)
}
function formatta_stringa (query) {
var stringa_formata = query.split (" ")
if (tipo_ricerca == "_or")
cerca_or (stringa_formata)
else
cerca_and (stringa_formata)
}
function cerca_or (stringa_formata) {
var matrix = new Array()
for (i = 0; i < db.length; i++)
{
var stringaConfronto = db[i].toUpperCase()
var stringaUtile = stringaConfronto.substring(0, stringaConfronto.lastIndexOf("|"))
for (j = 0; j < stringa_formata.length; j++)
{
var stringaUtente = stringa_formata[j].toUpperCase()
if (stringaUtile.indexOf(stringaUtente) != -1)
{
matrix[matrix.length] = db[i]
break
}
}
}
verifica(matrix)
}
function cerca_and (stringa_formata) {
var matrix = new Array()
for (i = 0; i < db.length; i++)
{
var coincidenza = true
var stringaConfronto = db[i].toUpperCase()
var stringaUtile = stringaConfronto.substring(0, stringaConfronto.lastIndexOf("|"))
for (j = 0; j < stringa_formata.length; j++)
{
var stringaUtente = stringa_formata[j].toUpperCase()
if (stringaUtile.indexOf(stringaUtente) == -1)
coincidenza = false
}
if (coincidenza)
matrix[matrix.length] = db[i]
}
verifica(matrix)
}
function verifica (matrix) {
if (matrix.length == 0)
{
doc.open()
doc.write('<html><head><style type="text/css">body{ scrollbar-face-color: #FFFFFF; scrollbar-arrow-color: #3300FF; scrollbar-3dlight-color: #FFFFFF; scrollbar-base-color: #66CCFF; scollbar-darkshadow-color: #3300FF;}</style></head><body ALINK="#330066" VLINK="#CC0000" TEXT="#000000" LINK="#FF0000" style="background-color: #66CCFF"><hr size="1" noshade color="#FFFF00">')
doc.write('<font face="Verdana, Arial, sans" size="3"><div align="center">Spiacente, non ho trovato elementi corrispondenti</div></font><hr size="1" noshade color="#FFFF00"></body></html>')
doc.close()
}
else
{
array_risultati = matrix.sort()
stampa_risultati(array_risultati, s, o)
}
}
function stampa_risultati(array_risultati, s, o) {
var limite = (array_risultati.length < s + o) ? array_risultati.length : (s + o)
doc.open()
doc.write('<html><head><style type="text/css">body{ scrollbar-face-color: #FFFFFF; scrollbar-arrow-color: #3300FF; scrollbar-3dlight-color: #FFFFFF; scrollbar-base-color: #66CCFF; scollbar-darkshadow-color: #3300FF;}</style><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><base TARGET="_top"></head><body ALINK="#330066" VLINK="#CC0000" TEXT="#000000" LINK="#FF0000" style="background-color: #66CCFF">' + '<table width="90%" border="0">' + '<tr><td><hr size="1" noshade color="#FFFF00"><tr><td><font face="Verdana, Arial, sans" size="2">Chiave di ricerca: ' + '' + parent.frames[0].document.forms[0]._query.value + '' + '
Risultati:' + '' + ' da ' + (s + 1) + ' a ' + limite + ' di ' + array_risultati.length + '</font>' + '<hr size="1" noshade color="FFFF00">')
for (i = s; i < limite; i++)
{
var splitta = array_risultati[i].split("|")
doc.write('<tr><td><dl><font face="Verdana, Arial, sans" size="2">' + splitta[0].link(splitta[2]) + '<dd>' + splitta[1] + '</font>')
}
doc.write('<tr><td><hr size="1" noshade color="#FFFF00"></table>')
visualizza_pulsanti (array_risultati, s, o)
doc.write('</body></html>')
doc.close()
}
function visualizza_pulsanti(array_risultati, s, o) {
doc.write('<form><div align="center">')
if (s > 0)
{
doc.writeln('<input TYPE="image" value="Precedenti" onClick="parent.frames[0].stampa_risultati(parent.frames[0].array_risultati, ' + (s - o) + ', ' + o + ')" SRC="03.gif">')
}
if (s + o < array_risultati.length)
{
doc.writeln('<input type="image" value="Successivi" onClick="parent.frames[0].stampa_risultati(parent.frames[0].array_risultati, ' + (s + o) + ', ' + o + ')" SRC="01.gif">')
}
doc.write('</div></form>')
}
</script>
==================
Attenzione però il codice contiene delle personalizzazioni che hoinserito per adattarlo allo stile del mio sito; le due immagini che si vedono se i risultati non vanno in una pagina, sono due frecce che provvedo ad inserire nel forum.
Nel tag body di questa pagina scrivi questo:
====================
<form name ="cerca" onSubmit="filtro(document.forms[0].elements[0].value); return false">
<div align="center">
<table width="550" border="0">
<tr>
<td width="500"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">CERCA
NEL SITO</font><font face="Verdana, Arial, Helvetica, sans-serif" size="-2"></font><font face="Verdana, Arial, Helvetica, sans-serif" size="2">
<input type="text" name="_query" size="30">
</font></td>
<td width="50">
<div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">HELP</font></div>
</td>
</tr>
</table>
</div>
</form>
==================
Questa è l'altra pagina contenuta nel frame in basso:
=================
<div align="center">
<table width="550" border="0">
<tr>
<td colspan="3" valign="top" height="0">
<hr noshade size="1">
</td>
</tr>
<tr>
<td height="13" valign="top" width="49%"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FF0000">per
cercare almeno una parola...</font></td>
<td width="2%" valign="top" height="13"></td>
<td width="49%" valign="top" height="13"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#F0000">per
cercare esattamente più parole...</font></td>
</tr>
<tr>
<td colspan="3" valign="top" height="0">
<div align="center">
<hr align="center" size="1" noshade>
</div>
<div align="center"></div>
</td>
</tr>
<tr>
<td valign="top" width="49%">
<font face="Verdana, Arial, Helvetica, sans-serif" size="2">...inserite
le parole da cercare, senza segni di interpunzione, nella casella CERCA
NEL NOSTRO DATABASE, poi premete INVIO.
</font><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Per
esempio, digitando:
shopping televisori
verranno visualizzati tutti i record che contengono almeno uno dei due
termini.</font></p>
</td>
<td valign="top" width="2%"></td>
<td valign="top" width="49%">
<font face="Verdana, Arial, Helvetica, sans-serif" size="2">...digitate
le parole da cercare, senza segni di interpunzione, nella casella CERCA
NEL NOSTRO DATABASE facendole precedere dal segno "+", poi
premete INVIO.</font></p>
<font face="Verdana, Arial, Helvetica, sans-serif" size="2">Per esempio,
digitando:
+ shopping televisori
verranno visualizzati tutti i record che contengono entrambi i termini.</font></p>
</td>
</tr>
<tr>
<td colspan="3" valign="top" height="10">
<div align="center">
<hr noshade size="1">
</div>
</td>
</tr>
<tr>
<td colspan="3" valign="top" height="2">
<div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="4" color="#FF0000" STYLE="font-variant: small-caps">Attenzione: maiuscole e minuscole non influiscono sulla ricerca.</font></div>
</td>
</tr>
<tr>
<td colspan="3" valign="top" height="12">
<hr align="center" noshade size="1">
</td>
</tr>
</table>
</div>
=====================
Come puoi vedere questa pagina contiene solo una descrizione.
Scusa ma mi ero dimenticato di dirti che la variabile
var doc = parent.frames[2].document
va modificata in
var doc = parent.frames[1].document
in quanto io ho aggiunto un frame che in quest'esempio ho tolto in quanto non c'entra nulla con l'esempio che ti ho fatto.