J'utilise fulltext dans MySQL J'ai besoin de sélectionner deux champs dans deux tables différentes Et aussi la priorité de recherche avec le champ de nom dans le premier tableau. C'est pourquoi j'ai multiplié le résultat par 2 en triant. Et c'est un bon spectacle excentrique. Mais il y a un problème avec trop de temps, et dans certains cas environ 30 secondes. Quels changements dois-je faire pour augmenter la vitesse de cette requête?Comment accélérer la recherche sur MYSQL FullText ou modifier la requête
Note:
ft_stopword_file = ""
ft_min_word_len = 1
Le nombre d'enregistrements de chaque table est 200.000
requête:
$search="hello* my* name* in* prim* this* in* a* test*"
SELECT f.id, f.name FROM
Find f left join Movie m on f.`tID`=m.`id`
WHERE MATCH(f.`name`,m.`text`) AGAINST('$search' IN BOOLEAN MODE)
ORDER BY MATCH(f.`name`,m.`text`) AGAINST('$search' IN BOOLEAN MODE) +
(MATCH(f.`name`) AGAINST('$search' IN BOOLEAN MODE) *2) DESC , length(f.Address)
LIMIT 30
merci pour la réponse, mais cette requête a une erreur "Colonne inconnue 'pertinence1' dans 'where clause'" – AmirHadi
oui, signifie que vous ne pouvez pas faire référence MATCH à partir de la liste de sélection dans WHERE. Vous devez donc appeler MATCH complet à l'endroit où, mais voyez si vous pouvez au moins réutiliser pertinence1 et pertinence2 dans ORDERY BY. – andrews
Merci beaucoup C'était beaucoup plus rapide qu'avant – AmirHadi