/ / Tri SQL avec plusieurs attributs (ordre par conformité) - sql, sql-server

Tri SQL avec plusieurs attributs (ordre par conformité) - sql, sql-server

J'ai une table avec certains attributs tels quenom et adresse. Dans un champ de recherche, je veux permettre aux utilisateurs d'un système de saisir tout ce qu'ils savent sur ces personnes et de renvoyer les résultats dans un tableau. De toute évidence, je veux que les résultats les plus appropriés soient au top.

  1. Le classement doit-il être effectué dans la commande SQL ou existe-t-il d'autres moyens qui pourraient mieux fonctionner?
  2. Quelqu'un connaît-il un bon moyen de classer / classer les résultats en fonction de la plus haute conformité? Je veux essentiellement que la personne apparaisse en haut qui correspond le plus aux critères de recherche.

Vous pouvez voir un exemple ici: http://sqlfiddle.com/#!2/19e9ad

Merci de votre aide!

(J'utilise actuellement SQL Server, mais toute aide est appréciée.)

Réponses:

1 pour la réponse № 1

Vous voudrez peut-être vérifier les index de texte intégral et les recherches - ils ont des options de classement qui pourraient faire le travail pour vous:

... et recherche d'informations sur les fonctionnalités:

Vous pouvez également travailler seulsolution comme l'analyse de l'entrée de l'utilisateur et la correspondance mot par mot, puis l'amélioration des résultats qui correspondent à plus de mots, l'ordre exact des mots, etc. .).


1 pour la réponse № 2

On dirait que vous demandez une fonction de comparaison de chaînes, telle que Jaro-Winkler. Il s'agit d'une fonction intégrée pour Oracle (http://docs.oracle.com/cd/E18283_01/appdev.112/e16760/u_match.htm) et j'imagine de nombreux autres RDBM.

Jaro-Winkler est assez bon pour reconnaîtreles chaînes sont juste dans le mauvais ordre, et le score le reflétera. Faites des tests et voyez si cela vous donne les résultats que vous souhaitez, mais je l'utilise beaucoup dans le travail que je fais (intégration des données client marketing). J'ai développé une API qui fait essentiellement cela, mais avec beaucoup de complexité supplémentaire, comme la comptabilisation des noms de surnoms, etc. L'API est à http://matchbox.io/#match-api.


0 pour la réponse № 3

Vous pouvez faire le tri dans SQL, mais la solution la plus courante est de faire le tri dans votre interface utilisateur afin de ne pas avoir à demander les données à db chaque fois que l'utilisateur change l'ordre de tri.

à la recherche de votre, vous pouvez ajouter un champ à votre requête pour afficher comformity quelque chose comme

 SELECT *, function_comformity() as comformity

Vous pouvez donc effectuer le tri sur votre interface utilisateur pour ce champ comme vous le faites pour le nom ou le code postal.