2013-04-04 7 views
0

Vous avez un problème avec les requêtes mysql. J'utilise la recherche en texte intégral.mysql recherche plein texte

J'essaie de trouver une correspondance exacte dans ma table de photos, mais des problèmes surviennent.

Disons que j'ai une description de photo comme « Reodor Hansen ont du mal avec mysql »

si je recherche puis pour un utilisateur nommé Reodor Mysql, l'image où Reodor Hansen est tagué sera visible.

Existe-t-il des options pour obtenir une correspondance exacte? Je parle maintenant de citations comme «et», mais elles ne m'aident pas ici.

Le problème est que je ne veux pas Reodor Hansens photos visible dans la recherche lorsque pour Reodor Mysql.

Voici la requête que j'utilise

SELECT * FROM _photos OU MATCH (description) CONTRE ('Reodor Mysql' EN MODE BOOLEAN)

plus. Une idée de comment je peux aller un peu plus loin? Je suis donc dans la zone de recherche écrire

« toutes les photos de Reodor Mysql » ou « me montrer les 10 dernières photos Reodor Mysql téléchargé »

et la recherche de répondre à ce sujet?

+0

Vous pouvez utiliser (ma) bibliothèque php pour cela: https://github.com/alexschwarz89/easy-mysqli-fulltext – Alex2php

Répondre

1

Si vous voulez trouver une expression exacte, vous pouvez utiliser des guillemets doubles. Juste comme ceci

SELECT * FROM _photos WHERE MATCH (description) 
        AGAINST ('"Reodor Mysql"' IN BOOLEAN MODE); 

Si vous voulez juste les 10 dernières images, vous pouvez ajouter une limite à votre requête. Quelque chose comme ça

SELECT * FROM _photos WHERE MATCH (description) 
        AGAINST ('"Reodor Mysql"' IN BOOLEAN MODE) 
        ORDER BY uploaded_date DESC 
        LIMIT 10; 
+0

Merci. Ça a marché. Une idée sur la façon de résoudre mon autre question? Comment puis-je demander à voir un utilisateur X dernières photos ou où un dernier utilisateur était en vacances –

+0

Je ne sais pas comment répondre à votre deuxième question parce que je ne sais pas comment est votre schéma et vos données. Pour répondre à cette question, j'aurais besoin de plus d'informations, par exemple: Où stockez-vous la date de téléchargement? Où stockez-vous les vacances des utilisateurs? Fulltext est juste un index MySQL qui vous permet d'effectuer des requêtes plus rapides sur une colonne de texte. – alexrom7

0

Si yo voulez une correspondance exacte de Reodor Mysql vous devrez utiliser le LIKE operator:

SELECT * FROM _photos WHERE description LIKE '%Reodor Mysql%'