MySQL: qu'est Ce qu'un reverse version de COMME?
COMME opérateur dans MySql est utilisé pour rechercher les lignes qui contiennent le texte de la requête, par exemple:
select name from user where name like "%john%"
qui sera de retour John Smith
, Peter Johnson
etc.
Que faire si j'ai besoin de l'inverse - pour rechercher les lignes qui sont CONTENUES dans notre texte de la requête? Par exemple, je lui donne John Smith and Peter Johnson are best friends
et il veut me trouver tous les noms de la table que l'on pouvait trouver dans cette chaîne.
Comment faire?
- Moi aussi, je suis déconcerté par la question. Sur le dessus de ma tête, que penser de l'utilisation d'un bon moteur de recherche FullText, par exemple, Sphinx ou Solr/Lucene?
- Je pense que ce qui est requis ici est quelque chose comme cela, sélectionnez le nom d'utilisateur, nom (Chaîne de Recherche) "John Smith et Peter Johnson sont les meilleurs amis". La sortie doit être Johm Smith, Peter Johnson, etc, à condition qu'ils soient dans le nom. Fondamentalement, une inversion de la recherche PLEIN texte.
Vous devez vous connecter pour publier un commentaire.
Voici une façon vous pouvez obtenir ce que vous décrivez:
Je préfère utiliser cette méthode au lieu de:
parce que si il n'y a aucune chance que le
name
pourrait contenir la%
ou_
de caractères (par exemple. nom='v%aleur'), alors la requête ci-dessus serait encore de retour qui enregistrent de manière incorrecte. Notez également que si votre colonne peut contenir des barres obliques inverses et/ou "C caractères d'échappement" alors qu'ils auraient également besoin d'être échappés. Tout est expliqué dans MySQL Comparaison De Chaînes De Caractères Fonctions. Par exemple le sous SQL serait de retour 1:La seule barre oblique inverse besoin d'être échappés avec
\\\\
et la%
personnage était échappé:\%
.C'est un texte d'indexation problème. Si je comprends bien, votre tâche est de trouver toutes les références à des personnes dans un texte de forme libre, et n'a rien à voir avec aimer ou ne PAS aimer.
Dans une forme générale, la table de base de données à l'encontre de qui vous êtes à la recherche de références agit comme un dictionnaire à un texte-algorithme d'indexation. Créer un index sur la chaîne d'entrée à l'aide de ce dictionnaire et j'espère que vous aurez quelques matchs.