Foros del Web » Programando para Internet » PHP »

Reto - Find?

Estas en el tema de Reto - Find? en el foro de PHP en Foros del Web. Tanto y tanto código y yo no he encontrado un buen código para hacer un buen sistema de busqueda de texto de manera que se ...
  #1 (permalink)  
Antiguo 13/09/2003, 00:41
 
Fecha de Ingreso: abril-2003
Ubicación: Venezuela
Mensajes: 297
Antigüedad: 21 años, 7 meses
Puntos: 1
Reto - Find?

Tanto y tanto código y yo no he encontrado un buen código para hacer un buen sistema
de busqueda de texto de manera que se pueda implementar para buscar tanto libros, nombres personas,
ciudades países y otros.

Con mi ignoracia de principiante en php no puedo hacer por ejemplo que like:

si busco con $palabra= FIN DEL MUNDO like %$palabra%, la encuentra muy bien, pero haga yo
la busqueda como $palabra= FIN MUNDO, no la encontrará.

Por otro lado si usao MATCH(indice_1, indice_2) , AGAINST ('palabra_1 palabra_2')

y busco la palabra $palabra_1 = php no la encontrará(por la regla de las palabras de 3 letras o menos), pero si busco $palabra_1= fin mundo, si habrá resultados en contraposición
al like.

Existe alguna otra sentencia para la Búsqueda de texto más exacta o se debe tarbajar con esas.

Si Hay otras sentencias o Se puede Mejorar las existen (like , MAcTH(), AGAINST), los reto a implementar, ya que he
buscado y no la encuentro.
__________________
crecer es conocer y conocer es aprender
  #2 (permalink)  
Antiguo 13/09/2003, 17:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
"reto"?

Bueno .. a la alternativa de busquedas en "full text" tienes la opción de construir tu sentencia SQL "dinámicamente" ..

El objetivo es descomponer tu frase en palabras y de ahí componer tu sentencia SQL que contendrá tantos bloques:

campo LIKE '%$palabra%' AND
campo LIKE '%$palabra%' AND
campo LIKE '%$palabra%' AND
... etc

Como palabras tenga tu frase ..

Descomponer una frase en palabras lo puedes hacer simplemente con explode() al caracter espacio " " .. Con eso obtendrás un array con tus palabras. Ese array .. lo puedes recorrer con un bucle foreach() o con un for() para concatenar tus sentencias SQL ..

Al final del proceso tendrás algo como:

$buscar="FIN DEL MUNDO";
$SQL="SELECT * FROM tabla WHERE campo LIKE '%FIN%' AND campo LIKE '%DEL%' AND campo LIKE '%MUNDO%'

y ..como veras .. esto te entregaría resultado de conincidencias tipo:

Esto es el FIN DEL MUNDO
En FIN, esto DEL MUNDO es una locura
DELante de todo esto esta la FINalidad del MUNDO

(las frase no són muy coherentes pero xD que sirva de ejemplo).

Ahí te dejo el "reto" a ti para que lo estudies .. Si buscas en el foro seguro que encuentras códigos ya hechos sobre lo que te planteo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 14:10.