Foros del Web » Programando para Internet » PHP »

Optimizar buscador de archivos

Estas en el tema de Optimizar buscador de archivos en el foro de PHP en Foros del Web. Tengo el siguiente codigo: Código PHP: function  buscarArchivos ( $file_folder , $buscar_r , $min_words ){ $buscar  =  $buscar_r ; $buscar_len  =  strlen ( $buscar ); ...
  #1 (permalink)  
Antiguo 30/03/2010, 13:54
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Optimizar buscador de archivos

Tengo el siguiente codigo:

Código PHP:
function buscarArchivos($file_folder,$buscar_r,$min_words){
$buscar $buscar_r;
$buscar_len strlen($buscar);
    
$buscar ereg_replace("\n"''$buscar);
    
$buscar ereg_replace("\t"''$buscar);
    
$buscar str_replace('.'''$buscar);
    
$buscar str_replace('"'''$buscar);
    
$buscar str_replace('\''''$buscar);
    
$buscar str_replace('+'''$buscar);
    
$buscar str_replace(','''$buscar);
    
$buscar str_replace('-'''$buscar);
    
$buscar str_replace('*'''$buscar);
    
$buscar str_replace('/'''$buscar);
    
$buscar str_replace('!'''$buscar);
    
$buscar str_replace('%'''$buscar);
    
$buscar str_replace('>'''$buscar);
    
$buscar str_replace('<'''$buscar);
    
$buscar str_replace('^'''$buscar);
    
$buscar str_replace('('''$buscar);
    
$buscar str_replace(')'''$buscar);
    
$buscar str_replace('['''$buscar);
    
$buscar str_replace(']'''$buscar);
    
$buscar str_replace('{'''$buscar);
    
$buscar str_replace('}'''$buscar);
    
$buscar str_replace('\\'''$buscar);
    
$buscar str_replace('='''$buscar);
    
$buscar str_replace('$'''$buscar);
    
$buscar str_replace('#'''$buscar);
    
$buscar str_replace('?'''$buscar);
    
$buscar str_replace('~'''$buscar);
    
$buscar str_replace(':'''$buscar);
    
$buscar str_replace('_'''$buscar);
    
$buscar str_replace('&amp;'''$buscar);
    
$buscar str_replace('&copy;'''$buscar);
    
$buscar str_replace('&nbsp;'''$buscar);
    
$buscar str_replace('&quot;'''$buscar);
    
$buscar str_replace('&'''$buscar);
    
$buscar str_replace(';'' '$buscar);
if(@
opendir($file_folder)==''){echo "La carpeta <b>$file_folder</b> no existe.";}else{
if(
$buscar_len<=$min_words){echo "La b&uacute;squeda debe tener m&aacute;s de <strong>$min_words</strong> car&aacute;cteres.";}else{
$dir = @opendir($file_folder);
while (
$file_name readdir ($dir)) {
$fs[]=$file_name;
$resultados=0;
}
usort($fs,"listarArchivos");
foreach(
$fs as $file_name){
if (
$file_name != "." && $file_name != "..") {
$count=$count++;
include(
'filedata.php');
$pos stripos($file_name_minus$buscar);
if (
$pos === false) {;} else {
$resultados=++$resultados;
echo 
"<strong>$file_part</strong> | $file_size_round<br>";
}
}
}
if(
$resultados==0){echo "La b&uacute;squeda de <strong>$buscar_r</strong> no obtuvo ning&uacute;n resultado.";}
closedir ($dir);
}
}

Pero quiero optimizarlo al maximo. Por ejemplo, si busco con la palabra "Manzanas" y hay un archivo que se llama "Manzana" no lo encuentra.
  #2 (permalink)  
Antiguo 30/03/2010, 13:59
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Optimizar buscador de archivos

Para ello necesitas usar expresiones regulares. Verifica este aporte http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 30/03/2010, 14:37
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Optimizar buscador de archivos

Sip, y te fijas de no utilizar ereg_replace, pues
Warning

This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
  #4 (permalink)  
Antiguo 30/03/2010, 18:34
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Optimizar buscador de archivos

Por que no ereg_replace?

Lei 20 veces esta guia http://www.forosdelweb.com/f18/aport...s-pcre-646110/ y lo unico que entiendo, es que con preg_match puedo tomar una palabra dentro de una oracion... Pero no se como aplicarlo y lo demas no entendi nada :S.

Si alguien tiene un tiempito para explicarme un poco mejor le agradeceria.

Muchisimas gracias.

Última edición por c0w; 30/03/2010 a las 18:48
  #5 (permalink)  
Antiguo 31/03/2010, 06:46
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Optimizar buscador de archivos

Puedes ir al mismo manual y consultar ereg_replace
  #6 (permalink)  
Antiguo 31/03/2010, 08:56
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Optimizar buscador de archivos

les juro que no entiendo, alguien me puede explicar mejor que hacen todos esos Grupos o clases de caracteres y metacaracteres?

Asi puedo emplearlos para optimizar mi buscador.
  #7 (permalink)  
Antiguo 31/03/2010, 09:07
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Optimizar buscador de archivos

Busca aqui mismo en el foro, un aporte de pateketrueke sobre esto de las expresiones regulares, está bastante explicativo
¿No entiendes y los estabas utilizando arriba?
  #8 (permalink)  
Antiguo 31/03/2010, 09:17
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Optimizar buscador de archivos

ereg_replace entiendo. Lo que no entiendo es eso de preg_ que tiene todos caracteres raros que no se ni para que son. Pero buen si me queres ayudar decime, sino no postees para ver si se o no. Si lo se no te voy a preguntar.
  #9 (permalink)  
Antiguo 31/03/2010, 09:23
Avatar de Tokkara  
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: Optimizar buscador de archivos

Y porque no prueba la función similar_text o soundex

similiar_text
Esta función de PHP te devuelve la similitud, en tanto por ciento, de 2 frases. Lo malo es que tien un coste de cúbico, O(n^3), por lo que si la frase es muy larga puede ser una función lenta.

soundex
Esta función devuelve la fonética de una palabra. Así podrás comprobar 2 palabras que fonéticamente se parecen.

Cita:
Por que no ereg_replace?
Las funciones para expresiones regulares del tipo POSIX han quedado obsoletas y en versiones futuras de PHP desaparecerán de su nucleo, por tanto debes usar funciones para expresiones regulares del tipo PCRE. Son muy parecidas entre sí, así que si sabes manejar las del tipo POSIX no te costará mucho manejar las del tipo PCRE.

Como te han explicado por ahí arriba hay muchos manuales en el foro que explican como usar las expresiones regulares. Pero... en tu código no he visto ninguna función de expresion regular, a excepcion de las 2 primeras, que pueden ser sustituidas fácilmente por una función del tipo str_replace.
__________________
Revolucionario controlador de plantillas para php
www.simphple.com
  #10 (permalink)  
Antiguo 31/03/2010, 09:30
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Optimizar buscador de archivos

Cita:
Iniciado por c0w Ver Mensaje
ereg_replace entiendo. Lo que no entiendo es eso de preg_ que tiene todos caracteres raros que no se ni para que son
Si entiendes ereg_replace, no te costará mucho trabajo preg, como te dicen arriba.

Cita:
Iniciado por c0w Ver Mensaje
Pero buen si me queres ayudar decime, sino no postees para ver si se o no.
¿Y q crees q hemos estado haciendo hasta ahora? AYUDAR!!!!

Cita:
Iniciado por c0w Ver Mensaje
Si lo se no te voy a preguntar.
Claroooooo, si lo sabes mejor haces un aporte
Y mejor chequéate los links q te lanzamos, que ya están explicadas las cosas q quieres.
  #11 (permalink)  
Antiguo 31/03/2010, 10:22
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Optimizar buscador de archivos

se ereg_replace y me cuesta preg que problema hay? aparte, te pido ayuda y en vez de ayudarme me decis no tendrias qe saberlo si hiciste lo otro?... y justamente porque lei la guia y no la entiendo, te pregunto a ver si me pueden detallar.

Muchas gracias tokkara, lo voy a probar.

Edito para no hacer doble post:
De que me sirve el similar_text si lo unico que me dice es la cantidad de similares? No me lo optimiza.

Código PHP:
Ver original
  1. $first_word = 'miarchivo';
  2. $second_word = 'archivos';
  3. $p = 50;
  4. $i = similar_text($first_word, $second_word, &$p);
  5. echo("Matched: $i  Percentage: ".round($p)."%");

Última edición por c0w; 31/03/2010 a las 10:35
  #12 (permalink)  
Antiguo 31/03/2010, 11:03
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Optimizar buscador de archivos

Bueno, ahora el lenguaje y el tono han cambiado.
¿Dónde exactamente es q tienes dudas?
  #13 (permalink)  
Antiguo 31/03/2010, 11:23
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Optimizar buscador de archivos

Mira, estuve averiguando mucho... y lo que encontre es que la funcion que necesito para optimizar mi busqueda es preg_match.

Lo que necesito hacer es que si tengo 1 palbra que es "manzanas y ciruelas acaramelada" y en la otra tengo "manzanax verdex", encuentre las coincidencias asi tendria como resultado "manzana".

Lo que me sirve de esto es poder mostrar los archivos al usuario sin tenes que ingresar EXACTO el nombre del archivo.

Mi problema es que busque en php.net y tengo:
Código PHP:
Ver original
  1. $subject = "abcdefg";
  2. $pattern = '/^abc/';
  3. preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
  4. print_r($matches);

Pero si pongo como te dije no me encuentra los matches. Y no tengo ni idea que cambian en la funcion los caracteres como "/^ /" o "@^(?:http://)?([^/]+)@i"

En realidad lo que busco es mejorar el buscador si se les ocurre otra cosa que sea simple para ingresar a mi codigo les agradeceria.

Etiquetas: buscadores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:42.