Buscador interno dentro del mismo sitio

Necesito un buscador bien simple interno dentro del mismo sitio (no de registros) sino de por ejemplo palabras, buscar una palabra clave en el sitio ej: asesoramiento y que me lleve a la página donde esta esa palabra, supongamos que la página tiene index, contacto, nosotros, productos, servicios como páginas que lo forman

1 Respuesta

Respuesta
1
Lucene es un API de código abierto para recuperación de información, originalmente implementada en Java por Doug Cutting. Está apoyado por el Apache Software Foundation y se distribuye bajo la Apache Software License. Lucene tiene versiones para otros lenguajes incluyendo Delphi, Perl, C#, C++, Python, Ruby y PHP.
Es útil para cualquier aplicación que requiera indexado y búsqueda a texto completo. Lucene ha sido ampliamente usado por su utilidad en la implementación de motores de búsquedas. Por ello, a veces se confunde Lucene con un motor de búsquedas con funciones de "crawling" y análisis de documentos en HTML incorporadas.
El centro de la arquitectura lógica de Lucene se encuentra el concepto de Documento (Document) que contiene Campos (Fields) de texto. Esta flexibilidad permite a Lucene ser independiente del formato del fichero. Textos que se encuentran en PDFs, páginas HTML, documentos de Microsoft Word, así como muchos otros pueden ser indexados mientras que se pueda extraer información de ellos.
http://lucene.apache.org
Te aporto más, por si Lucene no te convence o te parece demasiado complejo:
http://www.htmlpoint.com/guida/strumenti/html_07.htm -> Free find, parece bastante sencillo; has de registrarte en la web, aportar los datos relativos a tu página y te envían el código que has de insertar para que aparezca el buscador.
http://www.baluart.net/articulo/crear-un-buscador-interno-con-google-custom-search-engine -> para confeccionar un buscador interno con google
http://www.webtaller.com/construccion/lenguajes/php/lessons/buscador.php -> Para que lo hagas tú mismo.
No me podes pasar el código de uno armado en php pero no para registros con mysql, sino simple, lo necesito de urgencia
No, nosotros usamos Lucene.
Freefind es bastante simple y sólo requiere que te registres y que pongas un código.
¿Por qué no te vale ese? (Pregunto para poder acertar más con mi respuesta y ofrecerte lo que necesitas)
Porque lo necesito en php, no una página que me indexe la mía, lo tiene que ejecutar el mismo apache, sino no me sirve. ¿No sabes de donde puedo sacar uno armado?
Desde luego gracias por responder mi pregunta
No, he buscado pero no he encontrado ninguno.
Aunque si acaso se me ocurreo que puedes improvisar algo con esta función, que saca todos los archivos de un directorio:
function dirList ($directory)
{
// create an array to hold directory list
$results = array();
// create a handler for the directory
$handler = opendir($directory);
// keep going until all files in directory have been read
while ($file = readdir($handler)) {
// if $file isn't this directory or its parent,
// add it to the results array
if ($file != '.' && $file != '..')
$results[] = $file;
}
// tidy up: close the handler
closedir($handler);
// done!
return $results;
}
Y con esto, que busca palabras dentro de un archivo:
$Fichero = fopen ("ruta_del_fichero","r"; //con esto lo habriria el fichero en forma de lectura para leerlo.
while ((!feof($Fichero)) //lee has el final del fichero.
{
$Palabra_del_fichero = fgets ($Fichero); //cogeriamos la promera palabra del fichero.
if ($lo_que_hay_que_buscar == $Palabra_del_fichero) //conparamos lo que nos ha sacado con lo que queremos buscar.
{
echo "<a href='ruta_del_fuchero'>".$lo_que_hay_que_buscar."</a>" //escrive lo que ha encontrado.
}
}
Bien, por ahí vamos, acá lo mezcle con html, me debería aparecen un mini buscador al estilo google con un campo para buscar, pero me tira este error
Parse error: syntax error, unexpected T_VARIABLE in C:\AppServ\www\index.php on line 32
la linea es la que dice
$Fichero = fopen ("ruta_del_fichero","r");
$Fichero = fopen ("ruta_del_fichero","r");
Se supone que debes sustituir "ruta_del_fichero" por el archivo que encuentre la función de dirlist...
Ni idea, ¿le pongo el mismo index de la página?
Algo así
$Fichero = fopen ("index.php","r");
<?php
$lo_que_hay_que_buscar = $_POST['variable_que_recojes_del_formulario'];
// create an array to hold directory list
$results = array();
// create a handler for the directory
$handler = opendir($directory);
// keep going until all files in directory have been read
while ($file = readdir($handler))
{
  // if $file isn't this directory or its parent,
  // add it to the results array
  if ($file != '.' && $file != '..')
  {
    $Fichero = fopen ($file,"r"); //con esto lo abriria el fichero en forma de lectura para leerlo.
    while (!feof($Fichero)) //lee has el final del fichero.
    {
      $Palabra_del_fichero = fgets ($Fichero); //cogeriamos la primera palabra del fichero.
      if ($lo_que_hay_que_buscar == $Palabra_del_fichero) //comparamos lo que nos ha sacado con lo que queremos buscar.
      {
        echo "<a href='".$directory.'/'.$file."'>".$lo_que_hay_que_buscar."</a>"; //escribe lo que ha encontrado.
      }
    }
  }
}
// tidy up: close the handler
closedir($handler);
// done!
?>
A ver si con eso te vale.
¿Te sirvió?
Me tira error acá
Warning: readdir(): supplied argument is not a valid Directory resource in C:\AppServ\www\index.php on line ...
Warning: closedir(): supplied argument is not a valid Directory resource in C:\AppServ\www\index.php on line ...
¿A esto lo pongo en la página index junto con el formulario de búsqueda? Pero como sabe donde tiene que buscar, no me doy cuenta, o le tengo que poner c:\archivos de programa\apache , como te darás cuenta nunca me toco hacer un buscador interno, disculpame . Te paso el código con html inclusive . o se ayo quiero que me dispare a la sección contacto, servicios, etc desde la index de mi página o tiene que haber hipervínculos para que haga la búsqueda
<head>
<meta http-equiv="Content-Language" content="es">
</head>
<?php
$lo_que_hay_que_buscar = $_POST['buscar'];
$results = array();
$handler = opendir($directory);
while ($file = readdir($handler))
{
  if ($file != '.' && $file != '..')
  {
    $Fichero = fopen ($file,"r");
        while (!feof($Fichero))
    {
      $Palabra_del_fichero = fgets ($Fichero);
            if ($lo_que_hay_que_buscar == $Palabra_del_fichero)
                  {
        echo "<a href='".$directory.'/'.$file."'>".$lo_que_hay_que_buscar."</a>";
      }
    }
  }
}
closedir($handler);
?>
<form method="post" action="index.php"  name="formulario de busqueda">
    <input name="Submit1" type="submit" value="enviar">   
    <input name="buscar" type="text"></form>
Tienes que asignarle a la variable $directory el directorio en donde quieres que empiece a buscar...
El directorio es C:\AppServ\www , tengo instalado el ultimo apache ahí esta toda mi web, index.php, contacto.html, y precios.html, listado.html, ¿contacto.php y una carpeta que se llama images donde están todos los flash
o sea pongo algo así?
$handler = opendir($AppServ\www);
Me estarás reputean... pero bueno soy novato en php
Vale que seas notavo en php, ¿pero no sabes asignar un valor a una variable?
$directory = 'C:\AppServ\www'; o $handler = opendir('C:\AppServ\www');
A lo mejor asignandole un punto ($directory='. ') Empieza a buscar en el propio directorio en donde esté el archivo que contiene este buscador.
Por cierto, ¿esto es para la escuela o algo así?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas