SQL - Busqueda sin orden de palabras

 
Vista:

Busqueda sin orden de palabras

Publicado por skabo (1 intervención) el 07/10/2011 14:09:13
El tema es asi, como hacer si queres buscar en SQL por un campo texto, donde no importe el orden de las palabras, hay que armar todas las combinaciones? O existe alguna forma más eficiente de hacerlo?
Por ejemplo: si quiero buscar registros que en un campo texto, tengan las palabras “206” y “BSI” en cualquier orden, tengo que buscar:

WHERE (texto LIKE ‘%206%BSI%’ ) OR (texto LIKE ‘%BSI%206%’)

Claro que esto funciona, pero si quiero buscar con 5 palabras distintas son 120 casos distintos!!!

Si alguin sabe una forma eficiente lo agradeceria, gracias

Skabo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Busqueda sin orden de palabras

Publicado por leonardo_josue (1173 intervenciones) el 10/10/2011 17:34:48
Hola skabo:

Para hacer la búsqueda con LIKE, podrías buscar por palabra y en lugar de utilizar un operador OR utilizar un operador AND, es decir, si tu criterio de búsqueda fuera "esto es una búsqueda compuesta' deberías poner algo como esto:

1
2
3
4
5
6
WHERE
texto LIKE '%esto%' AND
texto LIKE '%es%' AND
texto LIKE '%una%' AND
texto LIKE '%búsqueda%' AND
texto LIKE '%compuesta%'


Ahora bien, esto puede resultar bastante ineficiente, sobre todo porque el operador LIKE es uno de los que más recursos consumen. No sé que DBMS estés utilizando, pero deberías preguntarle a San GOOGLE si soporta BUSQUEDAS DE TEXTO COMPLETO o FULL TEXT SEARCH, este tipo de búsquedas es mucho más eficiente que utilizar LIKE, lamentablemente no todos las BD lo soportan, es cuestión que investigues un poco.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar