| |||
Mejor forma para un sistema de busqueda cual es la mejor forma para hacer un sistema de busqueda dentro de una pagina? extraer los datos de una tabla a un array y buscar con alguna funcion de php(no se cual) la concoordancia de la busqueda con las palabras dentro del string? o hacer la comparacion de concoordancia con sql? si lo mejor es con sql les agradeceria si me pudieran explicar como se hace ya q de sql no se casi nada. |
| ||||
Respuesta: Mejor forma para un sistema de busqueda Lo mejor es con sql y te sugiero leer con este manual. Ahora tienes que especificar si es sql o mysql porque algunas funciones que se usen en sql no se podran hacer con mysql y viceversa. Pero la inmesa mayoria de lo que se hace con sql se puede lograr con mysql.
__________________ Verifica antes de preguntar. Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos |
| |||
Respuesta: Mejor forma para un sistema de busqueda Si el sitio no es muy grande / concurrido ,. una busqueda simple utilizando la sentencia LIKE de sql sera suficiente... Supongamos que tu string de busqueda es Código PHP: Aqui es donde entra la sentencia LIKE = '%texto%' Código PHP: |
| |||
Respuesta: Mejor forma para un sistema de busqueda gracias, eso me resuelve el problema a corto plazo, pero por q no funcionaria para un sitio muy grande? el sitio ahora mismo es algo pequeño, pero esta previsto para dentro de un par de meses expanderlo considerablemente con lo q se aumentaria significativamente tanto el trafico de visitantes como el tamaño de las bases de datos |
| |||
Respuesta: Mejor forma para un sistema de busqueda Para un sitio muy grande esto no funcionaria ya que si alguien en la busqueda escribe "como llego a tu casa?" ... una de las palabras a buscar seria *a* , y te saldrian en la busqueda todas los registros de la base de datos (mas o menos). Esto se puede corregir haciendo una limitante de caracteres en el loop de mi codigo anterior,. digamos... solo agregar al array likes[] las palabras con mas de 6 o 7 caracteres. Estoy seguro que eso si lo podras hacer tu (hint: busca en la funcion strlen() ). Saludos! |
| |||
Respuesta: Mejor forma para un sistema de busqueda si, eso ya lo tenia pensado para escapar busquedas de palabras como "a, de, con, etc." pero mi duda es que si para el querry de mysql simpre se usaria LIKE =%''% otra duda es como funciona el LIKE? busca exatcamente todas las palabras de $likes[] dentro de la columa a buscar? |
| |||
Respuesta: Mejor forma para un sistema de busqueda LIKE funciona de la siguiente manera: Código PHP: En mi codigo lo que hago es generar un array likes[] con varios valores: Código PHP: Código PHP: Creo que entenderias mejor mi codigo si leyeras sobre las funciones implode() y explode() del sitio php.net |
| |||
Respuesta: Mejor forma para un sistema de busqueda no, eso que dices ya lo habia entendido, a lo q me refiero es q si busca las palabras exatas dentro de '%text%' dentro de la columna a buscar, o si hace una aproximacion de ese texto, tengo la duda por q segun lo q entiendo de ingles like significa algo asi como "parecido a esto" o "como esto". |
| |||
Respuesta: Mejor forma para un sistema de busqueda ok muchas gracias abimaelrc, creo q ya me quedo claro leyendo el manual q pusiste en el comentario anterior. pero me parece q seria mas facil usar foreach q for Cita: en lugar de foreach($palabras as $palabra){ $likes[] = "columna LIKE '%{$palabra}%'"; } Cita: me parecce q el codigo queda mas limpio de esa manera. for ($i = 0; $i < count($palabras); $i++) { $likes[] = "columna_a_buscar LIKE '%".$palabras[$i]."%'"; } Última edición por severicks; 11/09/2009 a las 19:27 |
| |||
Respuesta: Mejor forma para un sistema de busqueda hise lo q me recomendaron pero me da un problema de coneccion con la base de datos, esto fue lo escribi Código PHP: Cita: *EDITADO:Data base query falied!You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' LIKE '%esto%'OR contenido LIKE '%texto1%', LIKE '%texto2%'' at line 1 bueno ya lo corregi solo tenia q cambiar los separadores del implode() por "AND columna ". Última edición por severicks; 12/09/2009 a las 01:27 |