Firebird sentencia: buscar coincidencias en una columna
Hola a tod@s,
quisiera hacer una consulta de una tabla para extraer los registros que más coincidan en una columna con la frase que busco.
Imagino que es algo como lo que suelen hacer los buscadores tipo google.
Es decir, si por ejemplo busco en una tabla de entidades la entidad:
'palabra1 palabra2 palabra3'
quisiera que la consulta me mostrara los resultados que encuentre en la tabla ordenado de mayor coincidencia a menor coincidencia, por ejemplo:
resultado:
palabra2 palabra3 palabra1
palabraX palabra3 palabra2 palabra1
palabra3 palabra2 palabraY
palabra1 palabraZ palabraQ
Observar que el orden del valor del registro puede ser distinto al criterio que busco, pero debe mostrarme primero los registros que mayor coincidencia tengan.
Estoy seguro de que debe haber una función en firebird que haga esto. El like no acaba de servir para lo que intento hacer ya que al montar la sentencia parecida a:
select * from entitades where columna like '%palabra1%' or like '%palabra2%' or like '%palabra3%'
El resultado no me lo ordenaría si encuentra las 3 palabras o si sólo encuentra 1.
Si pongo AND en lugar de OR sólamente me encontraría resultados que contengan las 3 palabras y podría interesarme los registros que contengan 2 palabras.
¿Alguna idea?
|