Je dois faire correspondre une entrée d'utilisateur avec une colonne de chaîne. Les deux contiennent des mots séparés par des espaces.SQL: correspondance d'un ensemble de mots par rapport à un autre ensemble et tri par nombre et par préfixe des correspondances
Les critères de classement est: nombre
- des mots qui correspondent depuis le début (match de préfixe) desc
- nombre de mots qui correspondent colonnes desc
- où les mots assortis viennent dans le même ordre comme dans la phrase d'entrée viennent en premier
Donc, étant donné l'échantillon suivant d ata
"one sample"
"un moment"
"no match"
"sample uno"
"uno sample"
"sample oun"
et l'entrée de l'échantillon "sa un foo"
, la sortie doit être:
"sample uno"
- 2 correspondances préfixe"uno sample"
- même, mais l'ordre des mots diffère"sample oun"
- 1 préfixe match + 2 mots appariés"un moment", "one sample"
- 1 préfixe match
La question est: puis-je implémenter ceci dans une seule requête SQL (postgresql
)? Je suis assez inexpérimenté avec SQL, donc j'apprécie toute aide. Merci!
I comprennent simple SQL FIDDLE
Pour votre échantillon quelles informations ajoutent «foo» à l'entrée de l'échantillon? –
Il impose le message "tous les mots ne doivent pas être appariés" – meandre
Désolé encore, ne pas undestand, si je supprime 'foo' des données d'entrée, le résultat serait différent? –