Je crée un système de type FAQ en ligne en utilisant php et mySQL. Le SQL suivant est ce qui est utilisé pour trouver des questions pertinentes en fonction de ce que l'utilisateur a entré comme $term
. Lorsqu'un utilisateur recherche quelque chose et clique sur une question pertinente pour afficher la réponse, il a la possibilité d'évaluer la question en fonction de ce qu'il a recherché.mySQL fulltext apprentissage
La première partie du SQL obtient des ID de question pertinents à partir de la table de questions réelle. La deuxième partie se penche sur la table de classement et essaie de faire correspondre ce que les gens ont déjà recherché pour trouver des ID de questions pertinentes.
L'union de ces résultats est ensuite utilisée pour obtenir les titres des questions réelles stockées dans la base de données.
(SELECT id_question,
MATCH(question, tags) AGAINST ('%$term%') as rank
FROM question
WHERE MATCH(question, tags) AGAINST ('%$term%')
AND category = '$category')
UNION
(SELECT id_question,
MATCH(customer_search_query) AGAINST ('%$term%') as rank
FROM rating
WHERE MATCH(customer_search_query) AGAINST ('%$term%')
AND (customer_rating = 1))
ORDER BY rank DESC LIMIT 5;");
Le problème que je rencontre est que le système n'apprend pas vraiment correctement. Par exemple, si je tape "trois utilisateurs", le système trouvera une correspondance dans la table des questions.
Si je tape "3 utilisateurs", le système trouvera une correspondance dans le tableau des questions (basé sur le mot-clé "utilisateurs"). Si je clique sur "oui cela répond à ma question" il va stocker "3 utilisateurs" dans le tableau de classement en l'associant à la question "trois utilisateurs".
Le problème est que "3" n'est associé qu'à "trois utilisateurs". Est-il possible d'associer le numéro 3 dans ce cas à chaque instance du mot "trois".
signifie que vous voulez remplacer toutes les instances d'un ancien mot (trois) par donné mot (3). J'ai-je raison? – diEcho