Título: BUSCADOR PARA WEB (sin PHP,MySQl o nada) solo JS
Publicado por: DarK_FirefoX en 7 Noviembre 2006, 02:53 am
Para los que quieran un Buscador interno en su pagina, aquí les posteo uno llamado Xsearch, es un potente buscador basado en javascript que permite hacer busquedas sin necesidad de un Hosting que ejecute codigos PHP, MySQL, etc. XSearch Engine version5.2 developed by P.Bestebroer http://www.dynamic-core.netBueno aquí va la estrucura de los archivos (5)--------------------------------------------------------- db.js--------------------------------------------------------- /* XSearch version 5.2 - Fichero de BD */
/* Comienza Opciones de Configuracion */
searchname = 'xsearch-5.2.htm' /* Nombre de la pagina del buscador */ usebannercode=true ButtonCode = "<img src='searchbutton.gif' border=0>" function templateBody() { document.write('<html><head><title>TITULO DE LA PAGINA</title><'+ 'script language="javascript">'+ '<'+'/'+'script'+'></head><body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#996699" alink="#996699"><Center><font face="Arial" size="3"><font face=Verdana size=12><b>XSEARCH</b><i>5.2</i></font><table border=0 width=640><tr><td>');/* Modifica lo que dice en la Pagina */ }
function templateEnd() { document.write('</td></tr></table></font></center></body></html>'); } function bannerCode() { }
/* Finaliza Opciones de Configuracion */
/* Comienza Registros de la BD */
add("<a href='dirección_de_la_pagina'>JSVCL2</a>","KEYWORDS o PALABRAS CLAVES","COMENTARIO DE LA PAGINA")
/* Finaliza Registros de la BD */ --------------------------------------------------------- --------------------------------------------------------- xsearch.css--------------------------------------------------------- h3 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; font-weight: normal; color:#6f6f6f} p { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt} li { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; margin-left: 5%;} .xtitle { font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12pt; font-weight: normal} .xresult { font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 9pt; font-weight: normal} .xlocation { font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 10pt; color:green; font-weight: normal} .xsmall { font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 8pt; color:green; font-weight: normal} --------------------------------------------------------- --------------------------------------------------------- xsearch-5.2.htm--------------------------------------------------------- <html> <head> <title>XSearch 5.2</title>
<script language="javascript" src="xsearch-5.2.js"></script> <script language="javascript" src="db.js"></script>
<body bgColor="#ffffff"> <script language="javascript"> initXsearch(); </script> </body> </html>
--------------------------------------------------------- --------------------------------------------------------- xsearch-5.2.js--------------------------------------------------------- /* XSearch Engine version5.2 */ /* developed by P.Bestebroer */ /* http://www.dynamic-core.net */
function trecords(){ this.index=(trecords.count++) this.link='' this.keywords='' this.description='' return this } trecords.prototype.set=function(link,keywords,description) { this.link=link this.keywords=keywords this.description=description } trecords.prototype.searchstring=function() { return this.link+' '+this.keywords+' '+this.description } trecords.prototype.count=0
function add(link,keywords,description) { al=records.length records[al]=new trecords() records[al].set(link,keywords,description) }
records = new Array() finds=0 sites=0 version="v5.2" andresult=false SortResults=true display_start=0 displast=10 function qsort(f, l){ // not used anymore, causes stack-overflow in large database // Qsort function by Rob B. var a=f var b=l var s var m = results[(a+b)>>1].val while (a<=b) { while (results[a].val>m) {a++} while (m>results[b].val) {b--}
if (a<=b) { s=results[a] results[a]=results[b] results[b]=s a++ b-- } } if (f<b) this.qsort(f, b) if (a<l) this.qsort(a, l) } function bsort() { for (var i=results.length-1; i>=0; i--) { for (var j=i; j>=0; j--) { if (results[i].val>results[j].val) { s=results[i] results[i]=results[j] results[j]=s } } } }
function searchAll(keyword){ var timeA=new Date() var nw=0 finds=0 sites=0
var x = parseIt(keyword) if(x == -1) return total_keywords=x
document.open() document.clear() document.write('<link rel="stylesheet" href="xsearch.css">') AddBody()
if (keyword.length>50) keyword=keyword.substring(0,60)+"..."
results=new Array() for (q=0; q<records.length; q++) { results[q]=new Array() results[q].rec=q results[q].val=0 }
for (nw=0; nw<keywords.length; nw+=1) search(keywords[nw]) if (andresult) { for (a=0; a<results.length; a+=1) { if (results[a].val>0) { if (results[a].val<=(total_keywords-1)<<1) { results[a].val=0 sites-=1 } } } } if (SortResults && keywords!='[all]') bsort()
// Now we build the output page displast=display_start displast+=10 if (displast>sites) displast=sites
var timeB=new Date()
if (finds==0) { display_start=-1; displast=0 } document.write("<center><h3>Resultados <b>"+(display_start+1)+"-"+(displast)+"</b> de <b>"+sites+"</b> para <b>"+keyword+"</b> Tiempo de búsqueda <b>"+((timeB-timeA)/1000)+"</b> segundos.</h3></center>")
if (displast>sites && finds!=0) displast=sites+1
if (finds==0) { document.write("<h3><font color=green>no se encontró <b>''"+keyword+"''</b></font></h3>"+ "<p>La palabra - <b>"+keyword+"</b> - no se encuentra en la base de datos.</p>"+ "<LI>Verifique que haya deletreado bien la palabra.</li>"+ "<LI>Intente nuevamente utilizando otra palabra clave.</li>"+ "<LI>Pruebe ingresando varias palabras en un mismo campo.</li></span>"+ "</p>") DisplayXSearch() document.close() return }
q2=display_start q3=displast for (q=display_start; q<q3; q+=1) { if (results[q].val>0) { rc=results[q].rec document.write("<span class='xtitle'>"+records[rc].link+"</span><br>") x1=records[rc].link.indexOf('http://') if (x1==-1) x1=records[rc].link.indexOf('href=')+5 else x1+=7 x2=records[rc].link.indexOf('>')-1 if (x1>0 && x2>0) { tmp=records[rc].link.substring(x1,x2) x2=tmp.indexOf(' ') if (x2>0) tmp=tmp.substring(0,x2) if (tmp.substring(0,1)=="'") tmp=tmp.substring(1,tmp.length-2) if (tmp.substring(0,1)=='"') tmp=tmp.substring(1,tmp.length-1) document.write("<table border=0 width=500><tr><td><span class='xresult'>"+records[rc].description+"</span></td></tr></table><span class='xlocation'>"+tmp+"</span><br><br>") } q2++ } }
if (finds>10) { document.write("<BR>") pages=Math.round(finds/10) if (finds%10<6) pages++
// Create the parameter string paramstring=searchname+"?keywords="+keyword+"&and="+andresult+"&sort="+SortResults
document.write("<center><span class='xsmall'>") if (display_start>0) document.write("<a href='"+paramstring+"&disp="+(display_start-10)+"'>anterior</a>") document.write(" ")
for (i=1; i<=pages; i+=1){ if ((((i-1)*10)+1)<=sites) document.write("<a href='"+paramstring+"&disp="+(((i-1)*10))+"'>"+i+"</a>   ") } document.write(" ") if (displast<=sites) document.write("<a href='"+paramstring+"&disp="+(displast)+"'>siguiente</a>") document.write("</span></center>") } DisplayXSearch() document.close() }
function Cat() { document.open() document.clear() document.write('<link rel="stylesheet" href="xsearch.css">') AddBody() DisplayXSearch() document.close() }
function stripInput(key) { while(key.substring(0,1) == "," || key.substring(0,1) == " " ) key = key.substring(1,key.length) while(key.substring(key.length-1,key.length) == "," || key.substring(key.length-1,key.length) == " ") key = key.substring(0,key.length-1) return key }
function parseIt(key) { key=stripInput(key)+" " var y=0
while(key.indexOf(" ") > 0) { if (key.substring(0,1)=='"') { var pos=key.indexOf('"',2) keywords[y]=key.substring(1,pos) keywords[y]=stripInput(keywords[y]) y++ key=key.substring(pos+1,key.length) } else { var pos=key.indexOf(' AND ') if ((pos>0) && (key.indexOf(' ')>=pos)) { pos=key.indexOf(' ',pos+5) keywords[y]=key.substring(0,pos) keywords[y]=stripInput(keywords[y]) y++ key=key.substring(pos+1,key.length) if (key.substring(0,4)=='AND ') { pos=keywords[y-1].indexOf(' ')+5 key=keywords[y-1].substring(pos,keywords[y-1].length)+' '+key } } else { var pos=key.indexOf(' OR ') if ((pos>0) && (key.indexOf(' ')>=pos)) { pos=key.indexOf(' ') keywords[y]=key.substring(0,pos) keywords[y]=stripInput(keywords[y]) if (keywords[y]!=keywords[y-1]) y++ key=key.substring(pos+1,key.length) pos=key.indexOf('OR ') key=key.substring(pos+3,key.length) pos=key.indexOf(' ') keywords[y]=key.substring(0,pos) keywords[y]=stripInput(keywords[y]) y++ key=key.substring(pos+1,key.length) if (key.substring(0,3)=='OR ') key=keywords[y-1]+' '+key } else { var pos = key.indexOf(" ") keywords[y]=key.substring(0,pos) keywords[y] = stripInput(keywords[y]) y++ if(y > 50) return -1 key=key.substring(pos+1,key.length) } } } } return y-1 }
var keywords = new Array() var results
function AddBody() { var keytext='"'+searchname+'?keywords="+' var andtext='"&and="+'
document.write('<script>function doSearch(){'+ 'searchwords=document.searchform.searchwords.value; '+ 'while (searchwords.indexOf(" ")>-1){ pos=searchwords.indexOf(" ");'+ 'searchwords=searchwords.substring(0,pos)+"+"+searchwords.substring(pos+1); }'+ 'document.location='+keytext+' searchwords+'+andtext+'"0"}'+ '<'+'/'+'script>' )
templateBody() document.write("<form name='searchform' method='post' action='javascript:doSearch()'><table border='0' width='100%'><tr><td align='center'><font face='Arial, Helvetica, sans-serif' size='3'><input name='searchwords' type='text' size='30'> <a href='javascript:doSearch()'>"+ButtonCode+"</a></font></td></tr></table></form><hr size=1>") if (usebannercode) bannerCode() }
function DisplayXSearch() { // This line can be removed, but please don't add anything like // copyright by <your name here> because that's not allowed, and // if you remove or change this line, make sure there is some credit here // and a link to www.dynamic-core.net so that other people can also // get their hands on this FREE search engine.. Thank you. document.write("<h3><center>Haga clic aquí para bajar <a href=xsearch.zip>XSearch "+version+"</a> Creado por P. Bestebroer</center></h3>") templateEnd() }
function search(keyword) { var hit=0 var addcomplete=0
for (q=0; q<records.length; q++) { addcomplete=0 search_parm=" "+records[q].searchstring()+" " search_parm=search_parm.toLowerCase()
if (keyword.indexOf(' AND ')>0) { firstword=keyword.substring(0,keyword.indexOf(' ')).toLowerCase() lastword=keyword.substring(keyword.indexOf(' AND ')+5,keyword.length).toLowerCase() if ((search_parm.indexOf(" "+firstword+" ") != -1) && (search_parm.indexOf(" "+lastword+" ")!= -1 )) { hit++ finds++ if(hit<2) { if (results[q].val==0) sites++ results[q].val +=2 } } } else { keyword=keyword.toLowerCase() if ((search_parm.indexOf(" "+keyword+" ") != -1) ||(keyword=="[all]")) { hit++ finds++ if(hit<2) { if (results[q].val==0) sites++ results[q].val+=2 } } else { // check for a half hit (ie. search:share find:SHAREware) if (search_parm.indexOf(keyword) != -1) { hit++ finds++ if(hit < 2) { if (results[q].val==0) sites++ results[q].val+=1 x=search_parm.indexOf(keyword)+keyword.length pos=search_parm.substring(1,x-keyword.length) while (pos.indexOf(" ")!=-1) { y=pos.indexOf(" ") pos=pos.substring(y+1,pos.length) } if (pos.length<=2) addcomplete++ pos=search_parm.substring(x,search_parm.length) fullresult=search_parm.substring(x,x+pos.indexOf(" ")) if (fullresult.length<=2) addcomplete++ if (addcomplete>1) results[q].val+=1 } } } } hit=0 } }
var searchwords = '' var newload = true
function initXsearch() { if (searchwords!='') searchAll(searchwords) else if (newload) Cat() }
function tparams(){ parameters=document.location.search parameters=unescape(parameters.substring(1,parameters.length)+'&')
this.params=new Array() i=0 while (parameters.indexOf('&',0)!=-1) { al=this.params.length this.params[al]=new Array() tmp=parameters.substring(0,parameters.indexOf('&',0)) parameters=parameters.substring(parameters.indexOf('&',0)+1)
if (tmp.indexOf('=')!=-1) { this.params[al].command=tmp.substring(0,tmp.indexOf('=')) this.params[al].value=tmp.substring(tmp.indexOf('=')+1) } else { this.params[al].command=tmp this.params[al].value='' } }
return this } tparams.prototype.getValue=function(param){ value='' param=param.toLowerCase() al=this.params.length for (var i=0; i<al; i+=1) if (this.params[i].command==param) value=this.params[i].value return value }
params=new tparams() if (params.getValue('keywords')!=''){ searchwords=params.getValue('keywords') origsearchwords=searchwords while (searchwords.indexOf('+')>-1) { pos=searchwords.indexOf('+') searchwords=searchwords.substring(0,pos)+' '+searchwords.substring(pos+1) } } if (params.getValue('sort')!='') if (params.getValue('sort')=='0' || params.getValue('sort')=='false') SortResults=false else SortResults=true if (params.getValue('and')!='') if (params.getValue('and')=='0' || params.getValue('and')=='false') andresult=false else andresult=true if (params.getValue('disp')!='') display_start=parseInt(params.getValue('disp'))
------------------------------------------------- searchbutton.gif------------------------------------------------- UNA IMAGEN QUE SERA LA IMAGEN DE BUSCAR, ES DECIR EL BOTON SI NO QUIERES QUE SE LLAME ASI DEBES CAMBIARLE LA RUTA EN EL FICHERO DB.JS, buscando la linea ButtonCode = "<img src='searchbutton.gif' border=0>" OK, ESPERO QUE LES AYUDE ESTE BUSCADOR
Título: Re: BUSCADOR PARA WEB (sin PHP,MySQl o nada) solo JS
Publicado por: Morris en 7 Noviembre 2006, 03:46 am
usa las etiquetas [ code ] para algo existen...
Título: Re: BUSCADOR PARA WEB (sin PHP,MySQl o nada) solo JS
Publicado por: DarK_FirefoX en 7 Noviembre 2006, 03:59 am
Lo siento Morris no me di cuenta, pero ya lo arregle, espero no haber causado molestias.
Título: Re: BUSCADOR PARA WEB (sin PHP,MySQl o nada) solo JS
Publicado por: дٳŦ٭ en 7 Noviembre 2006, 04:54 am
Lo siento Morris no me di cuenta, pero ya lo arregle, espero no haber causado molestias.
Naa, para nada ;) mmm, ps definitivamente es una muy buena opción pero no para web, paso a explicarme ;D Es una muy buena herramienta siempre y cuando lo implementes en desarrollos y/o aplicaciones locales ya que si tienes bastante contenido puede llegar a ser molesto para alguien que tenga dial-up (de 56kbps para abajo). En fin, saludos ;)
Título: Re: BUSCADOR PARA WEB (sin PHP,MySQl o nada) solo JS
Publicado por: Azielito en 8 Noviembre 2006, 20:22 pm
gracias por postearlo, hace tiempo que no lo veia y no recordaba como se llamaba, necesitaba uno urgente ;D
Título: Re: BUSCADOR PARA WEB (sin PHP,MySQl o nada) solo JS
Publicado por: DarK_FirefoX en 9 Noviembre 2006, 03:31 am
No por nada, para eso estoy para ayudar con todos los que necesiten de mi ayuda
Título: Re: BUSCADOR PARA WEB (sin PHP,MySQl o nada) solo JS
Publicado por: Azielito en 9 Noviembre 2006, 21:06 pm
Se me hace un poco lioso estar administrando asi la "base de datos" jehehehe pues bien, hice esto: como no puedo usar bases de datos en el servidor entonces tengo que usaer este que posteo el amigo Dark_firefoX, pero en localhost si tengo servidor de bases de datos entonces, como se me facilita capturar los datos en formulario decidi hacer un gestor para la base de datos del archivo ese jehehehe Primero creamos la base de datos ponle el nombre que quieras xD y, luego, ejecutamos esto(dentro de nuestra base de datos recien hecha¬¬) -- -- Estructura de tabla para la tabla `general` --
DROP TABLE IF EXISTS `general`; CREATE TABLE IF NOT EXISTS `general` ( `id_gral` int(9) NOT NULL auto_increment, `liga` text NOT NULL, `titulo` text NOT NULL, `pclave` text NOT NULL, `descripcion` text NOT NULL, PRIMARY KEY (`id_gral`) ) Luego metemos este archivo en nuestro localhost <html> <body> <?php function registros(){ $server = "localhost";// aca cambias el server de MySQL $usuario = "r00t";//aqui cambias tu usuario para el server $pass = "dGhlIFBhc3M"; $BaseDatos = "buscadorWeb"; $conectar = mysql_connect($server,$usuario,$pass)or die("No se pudo conectar al server"); mysql_select_db($BaseDatos,$conectar)or die("No se pudo seleccionar la base de datos"); $query = "SELECT liga,titulo, pclave, descripcion FROM `general`"; $sql = mysql_query($query,$conectar); while($d = mysql_fetch_assoc($sql)){ echo htmlspecialchars("add(\"<a href='../".$d['liga']."' target='_top'>".$d['titulo']."</a>\",\"".$d['pclave']."\",\"".$d['descripcion']."\")\n")."\n<br><hr>"; }
mysql_close($conectar); } // EOF
function formulario(){ $archivo = "dBuscador.php?guarda"; $form = "<form action=\"$archivo\" method=\"POST\">"; $form.= "Liga:<input type=\"text\" name=\"liga\" size=\"100\"><br>"; $form.= "Título:<input type\"text\" name=\"titulo\" size=\"100\"><br>"; $form.= "Palabras clave:<input type=\"text\" name=\"pclave\" size=\"100\"><br>"; $form.= "Descripción:<input type=\"text\" name=\"descripcion\" size=\"150\"><br>"; $form.= "<input type=\"submit\">"; $form.= "</form>"; return $form; }//EOF
function guarda(){ $liga = $_POST['liga']; $titulo = $_POST['titulo']; $pclave = $_POST['pclave']; $descripcion = $_POST['descripcion']; $conectar = mysql_connect("localhost","root","biter")or die("No se pudo conectar al server"); mysql_select_db("buscadorWeb",$conectar)or die("No se pudo seleccionar la base de datos"); $query = "INSERT INTO `general` VALUES (NULL,'$liga','$titulo','$pclave','$descripcion')"; if(!@mysql_query("$query",$conectar)){ echo "No se pudo guardar el registro, mysql dijo:<hr>".mysql_error(); }else{ echo "<script type=\"text/javascript\">"; echo "alert('El registro se guardo correctamente');\n"; echo "window.location.href='dBuscador.php?form';"; echo "</script>"; }
}//EOF
$url = $_SERVER['REQUEST_URI']; $reg = "php?registros"; $sav = "php?guarda"; if(strstr($url,$reg)){ registros(); echo "<title>Consulta de Registros</title>"; }elseif(strstr($url,$sav)){ guarda(); echo "<title>Guardando registro...</title>"; }else{ echo formulario(); echo "<title>Inserte registros</title>"; } ?>
</body> </html>
Espero que les sirva :P
Título: Re: BUSCADOR PARA WEB (sin PHP,MySQl o nada) solo JS
Publicado por: DarK_FirefoX en 10 Noviembre 2006, 21:00 pm
Bueno, la verdad que es muy lioso crear la base de datos como postee, pero lo hice para las personas que no tengan servidor para correr bases de datos SQL o PHP, Pero la Variante que da Azielito esta muy buena
Gracias por la Colaboracion
Título: Re: BUSCADOR PARA WEB (sin PHP,MySQl o nada) solo JS
Publicado por: Azielito en 10 Noviembre 2006, 21:06 pm
si, pos, seria algo asi como un formulario para agregar cosas a la base de datos, despues solo haces un "Copiar & Pegar" xD me facilito las cosas ahora trato de hacer un Generador de Mapas de Sitio >.< [este si, en php]
Título: Re: BUSCADOR PARA WEB (sin PHP,MySQl o nada) solo JS
Publicado por: DarK_FirefoX en 10 Noviembre 2006, 21:48 pm
OK, cool, ya lo probe, esta super bueno, la verdad que es mejor llenar los datos de esa manera
Título: Re: BUSCADOR PARA WEB (sin PHP,MySQl o nada) solo JS
Publicado por: jvmjunior en 27 Abril 2010, 23:05 pm
Después de 4 años de la publicación... espero que me contesten ;D
Necesito modificar el código para que le permita al usuario elegir la cantidad de resultados mostrados por pantalla, por defecto está con 10, pero mediante un input o un select quisiera darle la posibilidad al usuario de escoger esa opción......
parece fácil, pero llevo un mes sin poder lograrlo..... alguien me puede ayudar???
Gracias.
|