10
votes

Mysql comme l'opérateur vs match contre

Bonjour Je suis inquiet de savoir comment implémenter une requête de recherche simple, mon scénario est le suivant:

SELECT * ,MATCH(tag) AGAINST('+1111','+2222','+3333' IN BOOLEAN MODE) as score FROM table ORDER BY score DESC ;


2 commentaires

ATTENTION: Match contre ne fonctionnera pas avec moins de 4 caractères par défaut


Oui je sais qu'un exemple;)


3 Réponses :


24
votes

Vos recherches ne sont pas équivalentes. comme% 1% trouvera tout ce qui contient un 1 , par ex. 100 , 911 , 0.1 . C'est juste un match de sous-chaîne simple. Match ('+1') fonctionnerait théoriquement, mais FullText par défaut ignore les "mots" de <4 caractères. Cependant, en supposant que vous avez détendu la limite de longueur complexes, +1 trouverait tout indépendant 1 , mais pas qui ne sont pas incorporés dans un autre mot. Pour cela, vous auriez besoin de + * 1 * .


1 commentaires

Bon sang vous avez résumé dans 10 lignes tout ce que j'ai besoin de savoir merci :), je vais l'accepter bientôt ..



0
votes

Ne jamais utiliser% 1% Cela entraînera une numérisation de table complète et sera très inefficace si les données grandissent.

Fulltext est généralement plus rapide dans les jeux de données plus importants lors de la recherche dans les valeurs de chaîne. Comme les opérateurs sont utiles lorsque vous l'utilisez comme 'Text%'


1 commentaires

-1 Désolé, mais vous devriez vérifier mieux ma réponse -1 J'utilisais simplement un exemple, plus j'ai déjà édité que



12
votes

La solution la plus rapide consiste à créer une table correctement normalisée pour les balises, de sorte que chaque balise soit stockée sur une rangée distincte. XXX

Avantages:

  • Plus d'inquiétude pour les index de FullText, FT_MIN_LENGTHER, INNODB SUPPORT, ETC.
  • Plus de préoccupation concernant les mauvaises performances de la correspondance de sous-chaîne avec comme .
  • REGARDER UNE TAG DONNÉE ET SON DES ENTRÉES correspondantes dans Tableau utilise l'index de clé principale.
  • Recherche l'ensemble des balises pour une entrée donnée dans Tableau utilise l'index de clé secondaire.
  • Vous n'avez aucune limite au nombre de balises par élément dans Tableau .
  • Vous pouvez facilement compter la fréquence de certaines balises, vous pouvez récupérer l'ensemble des balises distinctes, vous pouvez limiter les étiquettes contre une table de recherche, etc.

0 commentaires