Amélioration d'un moteur de recherche interne

WRInaute impliqué
Bonjour a tous !

j'ai actuellement sur mon site un petit moteur de recherche simple qui cherche dans ma BDD avec LIKE .

Le problème c'est que le classement des resultat n'est pas du tout optimiser...

Alors j'ai pensé a faire un système de note :



Code:
--> on recup $search 

--> Remplace    "," par "" 
      ";" par "" 
      "-" par "" 

--> supprimer les mots comme : de le la les des dans du au ou et donc or ni car ... 

--> on compte le nombre de mot grace aux espace 

--> IF 1 mot 

on cherche combien de fois le mot est dans chaque colone de la bdd et on assigne une note en consequence 

- IF 1 fois dans TITRE --> 1pt 
- IF 2 fois dans TITRE --> 2pts 
.... 

+ 

- IF 1 fois dans description --> 1pt 
- IF 2 fois dans description --> 2pts 
.... 

+ 

- IF 1 fois dans CAT1 ou CAT2 ou logiciel --> 0.5 pt 

= $note 


--> else IF 2 mots 

on refait le calcul pour $mot1 et pour $mot2 

on aditionne $note1 + $note2 = $note 



-->else IF 3 mots 

on calcul pareil mais avec 3 mots 

$note1 + $note2 + $note3 = $note 


--> else IF 4 mots 

$note1 + $note2 + $note3 + $note4 = $note 


-->else IF $NB_mots > 4 --> ??? je sais pas quoi faire... 


Ensuite on sort de la BDD toute les videos avec une note > 0 et on les trie par note DESC.

qu'en pensez vous ?

- est ce que un système comme celui la est viable ou est ce que ca risque d'être trés long .... ?

- Si ce n'est pas bon avez vous une idée vers laquelle je puisse m'orienter ?

Merci d'avance
 
WRInaute occasionnel
Salut,

Pour coder un moteur de recherche, tu es obliger de passer par un systeme de notation pour donner de la pertinence a tes resultat. (C'est d'ailleurs l'origine meme de la notion de PageRank).

Ensuite ce qu'il faut avoir a l'esprit c'est que l'optimisation des requetes est en grande partie du a l'indexation des donnees. Dans le cas du texte par exemple, tu peux lors de l'indexation ajouter des information supplementaire (comme la distance entre les mots, qui peut etre un critere tres pertinent pour une requete avec plusieur mot). Evidement toute la charge de travail qui peut etre fait en amont, c'est a dire au moment de l'indexation est preferable, cela permet de faire des requetes plus rapide.

Si tu veux plus d'info sur les mdr je pourrais te ressortir mes cours de moteur de recherche, mais je ne suis pas sur que tu es envi de faire un mdr en entier (pourtant c'est tellement interessant :D)
 
WRInaute impliqué
merci pour les reponse...

j'ai un peu regarder fulltext, ca a l'aire bien compliqué...

Si j'ai bien compris il faut a chaque nouvelle entré dans la bdd ecrire les infos dans une colonne (en plus de celle ke jai deja) pour faire la recherche dedans ?

et la on a un resultat deja classé par pertinance ?

suis je dans le vrai ??
 
WRInaute impliqué
Bon j'ai lu encore plein d'articles...
Mais c'est pas trés claire...

J'ai regardé dans phpmyadmin je peu mettre une colonne de ma table en fulltext mais je ne sais pas laquelle mettre...

Est ce qu'il faut mettre n'importe laquelle ou toutes celle dans lesquel je veux rechercher ?
( en sachant que j'ai lu qu'il ne fallait pas en mettre plusieurs...)

Est ce que quelqu'un pourrait m'expliquer de facon simple le principe s'il vous plait?


Merci d'avance

Edit : apparemment toutes mes colonnes sont deja en full text sauf ID...
 
WRInaute impliqué
Bon merci

j'ai reussi a peu prés a utiliser fulltexte je test

merci de votre aide et de vos reponse rapide
 
Discussions similaires
Haut