/ / Clasificación SQL con múltiples atributos (orden por conformidad) - sql, sql-server

Clasificación SQL con múltiples atributos (orden por conformidad) - sql, sql-server

Tengo una tabla con ciertos atributos, comonombre y dirección. En un campo de búsqueda, quiero que los usuarios de un sistema escriban lo que saben sobre estas personas y devuelvan los resultados en una tabla. Obviamente, quiero que los resultados que mejor se ajusten estén en la cima.

  1. ¿Debería hacerse la clasificación en el comando SQL o hay otras formas que podrían funcionar mejor?
  2. ¿Alguien conoce una buena manera de ordenar / clasificar los resultados según la máxima conformidad? Básicamente, quiero que aparezca la persona que más se ajuste a los criterios de búsqueda.

Puedes ver un ejemplo aquí: http://sqlfiddle.com/#!2/19e9ad

¡Gracias por tu ayuda!

(Actualmente uso SQL Server, pero se agradece cualquier ayuda).

Respuestas

1 para la respuesta № 1

Es posible que desee verificar los índices de texto completo y las búsquedas; tienen opciones de clasificación que pueden hacer el trabajo por usted:

... y buscando información de funcionalidad:

Alternativamente, también puede trabajar por su cuentauna solución como analizar la entrada del usuario y hacer coincidir palabra por palabra, luego aumentar los resultados que coinciden con más palabras, ordenar las palabras exactas, etc. Pero tendrá que manejar varios casos usted mismo (como ciudades de varias palabras como "Nueva York", etc. .).


1 para la respuesta № 2

Parece que está pidiendo una función de comparación de cadenas, como Jaro-Winkler. Esta es una función incorporada para Oracle (http://docs.oracle.com/cd/E18283_01/appdev.112/e16760/u_match.htm) y me imagino muchos otros RDBM.

Jaro-Winkler es bastante bueno para reconocerlas cadenas están en el orden incorrecto y la puntuación lo reflejará. Realice algunas pruebas y vea si le da los resultados que desea, pero lo uso mucho en el trabajo que hago (integración de datos de clientes de marketing). Desarrollé una API que básicamente hace esto, pero con mucha complejidad adicional, como la contabilidad de los apodos, etc. La API está en http://matchbox.io/#match-api.


0 para la respuesta № 3

Puede ordenar en sql, pero la solución más común es ordenar en su interfaz de usuario, por lo que no tiene que solicitar los datos de db cada vez que el usuario cambia el orden de clasificación.

buscando su, es posible que desee agregar un campo a su consulta para mostrar comformity algo como

 SELECT *, function_comformity() as comformity

Por lo tanto, puede ordenar en su interfaz de usuario para ese campo como lo hace para el nombre o el código postal.