Skip to content

theLordOfHosts/Moteur-de-recherche

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Moteur-de-recherche

C'est à dessein un outil qui maintienne un équilibre entre la performance et l'ergonomie (retrouver une information et la r etrouver vite). Pour ce faire j'ai créé un moteur de recherche qui cherche à émuler celui de google et trie les articles par pertinence. Le moteur fonctionne grâce à  PDO: $db = new PDO("mysql:host=127.0.0.1;dbname=queryengine;charset=utf8","root","");

L'instanciation attend 1 paramètre obligatoire mais vous devrez obligatoirement vous servir du second $sqe=new Query_Engine($db,[ "CONTENT"=>"CONTENT_ARTICLE", "TITRE"=>"TITRE_ARTICLE", "RESUME"=>"RESUME_ARTICLE" ]); Le premier c'est le PDO et le second assigne les champs sur lesquels le moteur devra faire les recherches. CONTENT => Correspond au contenu de l'article TITRE => Titre de l'article RESUME => Résumé de l'article

Requête SQL Vous devez paramétrer la requête SQL permettant de récupérer les articles $sqe-> setQuery("SELECT * FROM article_tbl WHERE CONTENT_ARTICLE LIKE "%{:query:}%" OR TITRE_ARTICLE LIKE "%{:query:}%""); {:query:} sera substitué par le critère de recherche appelé par la fonction ->query()

Paramétrez les coeficients $sqe->setCoef("chapitre", 0.03); $sqe->setCoef("tagcontent", 0.7); $sqe ->setCoef("title", 6); $sqe->setCoef("resume", 0.06); $sqe->setCoef("ta g", 0.01); "chapitre" correspond au nombre de chapitres dans l'article "tagcontent" correspond au nombre de fois où la recherche se trouve entre des balises "title" détermine quand la recherche correspond au titre "resume" correspond au nombre de fois où la recherche se trouve dans le resumé "tag" correspond au nombre de tags

Ajoutez des critères supplémentaires $query="assurance"; $sqe->Pertinence_criteria("NB_CHAP", "/<h2/is"); $sqe->Pertinence_criteria("TAG", "/<[^&gt;]+>/is"); $sqe->Pertinence_criteria("COUNT_RELIEF", "/<[^&gt;]+>($query)<[^&gt;]+>/is");

Pour finir, exécuter la requête $result=$sqe->query($query);

Vous constaterez que quelque soit la requête saisie, le premier article sera toujours le plus pertinent.Le ZIP contient l'exemple décrit plus haut ainsi que la base de données utilisée que vous pouvez importer.