Préparer une base de donner SQL systeme de recherche

Default
,

Bonjour,

Je viens ici pour avoir des conseils à propos de la mise en place d'une base de donnée pour la recherche.
Mon but c'est de faire une base de donnée de bout de code. Ce que je voudrais c'est chercher dans cette base de donée de la meilleure maniere possible.
Les infos que j'ai a stoquer sont les suivante:

  • nom: Le nom de mon bout de code
  • description: uen petite description pour expliquer un peu ce que ca fait
  • content: mon bout de code
  • tags: les tags associés pour améliorer la recherche
  • language/dcc: le language ou le logiciel sur lequel le bout de code est destiné

Le but c'est de faire une app du style a spotlight pour mac (https://www.intego.com/mac-security-blog/wp-content/uploads/2015/01/spotlight-600x300.jpeg?sr=1) donc il faudrait que la recherche soit vraiment le plus rapide possible.
La dernière fois que j'ai fais un site c'etait il y a 10 ans donc je ne sais pas comment les technos on évolué. Je recherche seulement la partie base de donnée car le front end sera en python.
Je voudrais savoir si vous avez une idée de la maniere de structurer ou de rechercher ces données pour que ce soit le plus rapide possible.
Sachant que les champs qui seront affichés pendent la rechercherche seront le nom et la description seulement.

Je viens donc chercher des infos avant de m'y mettre comme ca je suis contraint à rien pour l'instant. Je vous remercie d'avance de vos réponses.

1 Réponse

26207
,

tu peux utiliser LIKE en SQL pour recherche un bout de texte a l'interieur d'une colonne la colonne (Code dans ton cas) mais attention, c'est un peu plus long. Pour contrer ce phénomène, tu peux mettre le resultat en cache (valable 24h ou plus)

SELECT * FROM ma_table WHERE Code LIKE "%function toto()%";

et MySQL est intélligent, si tu lui demande dans un WHERE de DABORD trier par language, il ne fera son like que sur le premier jeu de résultat (ex que la catégorie php) ce qui augmente concidérablement sa vitesse d'execution

SELECT * FROM ma_table WHERE language = "php" AND tags = 'admin' AND (nom LIKE "%ma_recherche%" OR content LIKE "%ma_recherche%" OR description LIKE "%ma_recherche%");