Si je voulais construire un moteur de recherche, comment pourrais-je commencer? [fermé]


9

Quelqu'un peut-il m'orienter dans la bonne direction? Je n'ai vraiment pas d'expérience dans l'écriture de code mais j'apprends vite. Je n'essaye pas de dire que ce sera facile mais j'espère que quelqu'un pourra m'aider ...


6
Si vous n'avez aucune expérience dans l'écriture de code, que diriez-vous d'apprendre à coder en premier? Construire un moteur de recherche est une sorte de surpuissance pour quelqu'un de nouveau en programmation.
Terence Ponce

3
Comme le dit Terence, ce n'est pas quelque chose pour les débutants en programmation. Tout moteur de recherche qui est bon a tendance à être un travail assez compliqué, il y a une raison pour laquelle Google est si massif, ils accomplissent assez bien une tâche très difficile. Même les programmeurs aguerris ont tendance à préférer utiliser quelque chose de pré-construit. Si vous donnez une idée de ce que vous voulez, nous pouvons peut-être vous orienter dans la bonne direction.
Orbling

2
Commencez avec un petit projet. Construire un moteur de recherche implique une énorme quantité de code. Et comment recueillez-vous toutes les données pour votre moteur de recherche? Vous aurez besoin de beaucoup plus de code et d'une infrastructure massive. Vraiment, veuillez commencer sur de plus petits projets et travailler ou vous serez simplement frustré.
James

1
Ce livre m'a aidé à comprendre ce que sont les moteurs de recherche et comment ils sont construits: nlp.stanford.edu/IR-book
devnull

Réponses:


16

J'ai écrit ceci pour un blog que j'avais l'habitude de remonter quand .... ce n'est plus sur le web donc .. le voici! :

Comment écrire un moteur de recherche

Darren Rowse sur probolgger.net organise un projet d'écriture de groupe sur tout "Comment faire". C'est l'un des rares blogs que je lis régulièrement, alors je pense pourquoi ne pas écrire quelque chose qui vaut la peine d'être lu pour changer, plutôt ma diatribe violente standard où je finirai par menacer de poignarder Hugo Chaves dans la gorge.

J'ai décidé d'écrire "Comment écrire un moteur de recherche". J'ai choisi ce sujet pour deux raisons:

  1. Il n'y a pas beaucoup de bonnes informations à ce sujet sur le Web.
  2. J'en rédige actuellement un pour un de mes clients.

Mon client est un détaillant en ligne de taille importante, donc je ne recherche pas tout le Web uniquement sur son site, plus précisément sur les produits à vendre sur son site. Néanmoins, les mêmes techniques peuvent être utilisées pour rédiger une technique plus complexe utilisée pour la recherche sur Internet. Je sais que ce n'est pas un blog technique, donc je n'entrerai pas trop dans les détails techniques, je ne discuterai pas non plus du matériel \ des besoins en puissance de traitement, ni de l'exploration Web.

J'utilise une technique assez simple, j'ai une table (tblKeywords) avec trois champs:

  1. Itemid (si vous effectuez une recherche sur le Web, ce serait l'URL)
  2. Mot clé (mot-clé indexé)
  3. Poids (il s'agit d'une valeur numérique comprise entre 1 et 100, plus ce nombre est élevé, plus le poids est important (poids)) * PK = ItemID + KeyWord

La première chose que je fais est de collecter des mots individuels de n'importe quel endroit pertinent. Pour mon client, je tirerai les mots du tableau des produits. Plus précisément à partir des champs Itemid, ItemName, ItemShortDescription, ItemLongDescription, Manufacturer, ManufacturerSKU, Category1, Category2, Category3 ect. Si vous indexez des pages Web, vous pouvez extraire des données du texte de la page, du titre de la page, de l'URL ou des liens sur d'autres pages qui renvoient vers la page en cours d'indexation.

La valeur de poids est déterminée par l'origine du mot clé. Par exemple, dans mon cas, le SKU de la fabrication de l'article obtiendrait un poids de 100, tandis qu'un mot du nom de l'article pourrait avoir un poids de 25. Un mot de la ItemLongDescription peut avoir un poids de 5. Si vous indexez des pages Web, les mots du titre de la page peut avoir un poids de 75 tandis qu'un mot en gras du texte de la page peut avoir un poids de 10. Si un mot est répété plus d'une fois ou \ et à plus d'un endroit, vous additionnerez le poids à chaque fois ça arrive. Par exemple, si le mot «chemise» vient de deux endroits pour ItemId = 12345, le nom d'article (poids de 25) et apparaît deux fois dans ItemLongDescription (poids de 5 x2 = 10), le mot «chemise» aurait un poids total de 35 pour ItemId = 12345.

Si quelqu'un recherche «chemise rose», je recherche dans ma table toutes les occurrences des mots «rose» ou «chemise» et totalise les poids. Affichage des articles avec le poids total le plus élevé sur le dessus.

SQL:

Select Itemid, sum(weight) as totWeight from tblKeywords
group by itemId having keyword in ('pink','shirt')

Alors voilà, un moteur de recherche basique (et rapide). Bien sûr, il y a plus à faire, comme la ponctuation rayée, le code HTML et des mots-clés sans valeur tels que "et", "si", "ou". Cela ne concerne pas la recherche de phrases clés, mais vous pouvez utiliser un système similaire pour les phrases si vous pouvez comprendre où elles commencent et se terminent.


merci belle réponse. que proposeriez-vous également pour regrouper les produits. Je veux dire que vous avez environ 1 million de pages de produits explorées provenant de différents sites Web. vous souhaitez regrouper les mêmes produits sur différents sites Web: programmers.stackexchange.com/questions/134292/…
MonsterMMORPG

@Monster - Que diriez-vous de la combinaison Fabricant \ SKU de l'article?
Morons

Vous pouvez également acheter (louer) ces données auprès d'entreprises comme Etilize
Morons

pouvez-vous l'expliquer un peu plus parce que je ne l'ai pas compris. Je vous remercie.
MonsterMMORPG

3
Une réponse pratique "ok". Cependant, cela ne tient pas compte de l'ensemble du domaine d'études, appelé "recherche d'informations". Pour ce qui est de "pointer dans la bonne direction", l'IR aurait été mieux dans mon esprit.
Darknight


3

Les moteurs de recherche sont construits sur des robots d'exploration Web , vous devrez trouver comment construire l'un de ces ventouses avant de pouvoir développer un site Web pour afficher ses résultats (vous aurez besoin d'une base de données rapide et efficace pour l'accompagner).


3
Un moteur de recherche peut consommer la sortie d'un robot d'indexation Web, mais sinon, ils ont très peu à voir les uns avec les autres. De plus, il est peu probable qu'une base de données rapide et efficace de la variété SQL aide beaucoup dans cette entreprise. Les moteurs de recherche sont généralement construits à l'aide de schémas d'indexation de fichiers inversés, qui ne correspondent pas du tout au moule SQL.
Marcelo Cantos

@Marcelo Cantos: L'indexation des fichiers inversés semble compliquée: -0 - Merci d'avoir aidé à clarifier ma réponse!
palbakulich

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.