Bonjour à tous !

Je voulais savoir, par rapport aux recherches via un formulaire de recherche.

Est-il mieux de créer dans l'administration de son site un champs "mot clé" pour chaque article, dans lequel on y entre les mots clés correspondant ou pas ?

Et ensuite pour faire la recherche, si il est mieux de faire la recherche sur les mots clés, et/ou le titre, et/ou le contenu de l'article ?

Et de quelle manière je peux optimiser sa au mieux, pour par exemple rendre les résultats trouvé dans les titres prioritaires à ceux du contenu ou quelque chose dans ce genre ?

Merci d'avance =)

4 réponses


Grafikart
Réponse acceptée

Pour les mots clef une table de liaison est idéal avec une version "séparé par des virgules" stocké dans la table en question

Exemple de pertinence :

SELECT
                    (3+(MATCH (Tutoriel.name) AGAINST ('$kw')))*
                    (1+(MATCH (Tutoriel.content) AGAINST ('$kw')))*
                    (4+(MATCH (Category.name) AGAINST ('$kw'))) AS pertinence,
                    Tutoriel.id
            FROM
                        tutoriels as Tutoriel,
                        categories as Category
            WHERE
                    (MATCH (Tutoriel.name) AGAINST ('$kw' IN BOOLEAN MODE)
                    OR MATCH (Tutoriel.content) AGAINST ('$kw' IN BOOLEAN MODE)
                    OR MATCH (Category.name) AGAINST ('$kw' IN BOOLEAN MODE)
                    ) AND
                    Category.id = Tutoriel.category_id AND
                    Tutoriel.online>0
            GROUP BY
                         Tutoriel.id
            ORDER BY
                         pertinence DESC

En fait en utilisant le match Against tu va pouvoir rechercher sur plusieurs champs. Le système de mot clef peut te permettre de donner une priorité si tu trouve un mot clef correspondant à la recherche

Typhon
Auteur

Merci beaucoup =)

Est-il mieux de faire un table dans laquelle j'enregistre mes mots clés, puis liés chaque mots clé au bon article,
ou de rajouter une champs mot clé dans ma table de posts ?

Si je fais un requête de ce genre :

SELECT * FROM posts WHERE (MATCH (MotCléDuPost, Titre) AGAINST ('MotClé1') OR MATCH (MotCléDuPost, Titre) AGAINST ('MotClé2')) > 0 OR (MATCH (content) AGAINST ('MotClé1') OR MATCH (content) AGAINST ('MotClé2')) >= 10

Je rends donc le fait d'avoir un mot clé recherché, dans ma liste de mots clés aussi important que s'il est dans le titre; pour le contenu il faut qu'il y soit au moins 10 fois pour que l'article soit ajouter au résultat si le mot clé recherché n'est pas dans le titre ni dans la liste de mots clé.

Ensuite je voudrais trier ça par nombre de correspondance, mais euh... comment ? =)
En enregistrant le résultat de chaque MATCH et en ordonnant par celui ci ?

Typhon
Auteur

Merci beaucoup (=