2010-03-04 5 views
2

Je souhaite intégrer la fonction de recherche fulltext MySQL dans mon site PHP.MySQL: comment faire une recherche fulltext dans un tableau

J'ai le problème suivant maintenant.

SELECT * 
FROM testtable t1, testtable2 t2 
WHERE MATCH (
t1.firstName, t1.lastName, t1.details, t2.firstName, t2.lastName, t2.details 
) 
AGAINST (
'founder' 
); 

Et j'ai le code d'erreur:

#1210 - Incorrect arguments to MATCH 

Savez-vous pourquoi et comment le résoudre?

Merci beaucoup!

Edit:

J'adopte la méthode de RageZ:

SELECT * 
FROM testtable t1, testtable2 t2 
WHERE MATCH (
t1.firstName, t1.lastName, t1.details 
) 
AGAINST (
'founder' 
) OR MATCH(t2.firstName, t2.lastName, t2.details) AGAINST (
'founder' 
); 

et moi avons une nouvelle question. Si je veux trouver le contenu qui sont:

AGAINST('founder', 'initiator', 'employee'); 

Comment ecrire la requête?

Ok, je sais contre ne peut avoir qu'un seul critère.

AGAINST('founder'); 

Répondre

2

Je pense que depuis la recherche en texte intégral utiliser des index spécifiques que vous devez séparer la table par OR

SELECT * 
FROM testtable t1, testtable2 t2 
WHERE MATCH (
t1.firstName, t1.lastName, t1.details 
) 
AGAINST (
'founder' 
) OR MATCH(t2.firstName, t2.lastName, t2.details) AGAINST (
'founder' 
); 
+0

qui sent comme un cartésienne produit pour moi (mais alors, je n'ai aucune expérience avec "match/contre") .. ne devrait pas y avoir une "restriction" (alias rejoindre) qui provents cela? – lexu

+0

@thanks RageZ, si les éléments dans AGAINST sont multiples, comment gérer cela? –

+0

votre aurait à copier le motif plusieurs fois – RageZ

0
AGAINST('founder initiator employee'); 

ou vous pouvez utiliser boolean mode avec plus de bonnes choses

Questions connexes