Question

J'ai toujours été intéressé par le développement d'un moteur de recherche Web. Quel est un bon endroit pour commencer? J'ai entendu parler de Lucene, mais je ne suis pas un grand Java. D'autres bonnes ressources ou projets open source?

Je comprends que c'est un énorme engagement, mais cela fait partie de l'appel. Je ne cherche pas à créer le prochain Google, mais un outil que je peux utiliser pour rechercher un sous-ensemble de sites susceptibles de m'intéresser.

Était-ce utile?

La solution

Il existe plusieurs éléments dans un moteur de recherche. D'une manière générale, d'une manière désespérément générale (les utilisateurs , n'hésitez pas à modifier si vous estimez pouvoir ajouter de meilleures descriptions, des liens, etc.):

  1. Le robot d'exploration . Cette partie passe par le Web, saisit les pages et stocke les informations les concernant dans un magasin de données central. En plus du texte lui-même, vous voudrez des informations telles que l'heure à laquelle vous y avez accédé, etc. Le robot d'exploration doit être suffisamment intelligent pour savoir à quelle fréquence accéder à certains domaines, respecter la convention robots.txt, etc.

  2. L'analyseur . Ceci lit les données extraites par le robot, les analyse, enregistre les métadonnées dont il a besoin, jette les fichiers inutiles et fait éventuellement des suggestions au robot sur ce qu’il faut chercher la prochaine fois.

  3. L'indexeur . Lit le contenu analysé par l'analyseur et crée des index inversés dans les termes trouvés sur les pages Web. Il peut être aussi intelligent que vous le souhaitez - appliquez les techniques de la PNL pour créer des index de concepts, des liens croisés, des synonymes, etc.

  4. Le moteur de classement . Avec quelques milliers d’URL correspondant à "pomme", comment décidez-vous quel résultat est le meilleur? L'index ne vous donne pas cette information. Vous devez analyser le texte, la structure de liaison et tout autre élément que vous souhaitez examiner, puis créer des partitions. Cela peut être fait complètement à la volée (c'est vraiment difficile), ou basé sur certaines notions pré-calculées de "experts". (voir PageRank, etc.).

  5. Le frontal . Quelque chose doit recevoir les requêtes des utilisateurs, s’appuyer sur le moteur central et répondre; ceci doit être intelligent dans la mise en cache des résultats, éventuellement en mélangeant les résultats d'autres sources, etc. Il a son propre ensemble de problèmes.

Mon conseil: choisissez lequel de ces projets vous intéresse le plus, téléchargez Lucene ou Xapian ou tout autre projet open source, sortez le composant qui fait l’une des tâches ci-dessus et tentez de le remplacer. J'espère avec quelque chose de mieux :-).

Quelques liens qui pourraient s’avérer utiles: " Un robot Web agile & ; un article de Estonie (en anglais) moteur de recherche Sphinx , une API d'indexation et de recherche. Conçu pour les grandes bases de données, mais modulaire et évolutif. "Récupération de l'information ", un manuel sur les relations internationales de Manning et Al. Bon aperçu de la construction des index, problèmes divers qui se posent, discussions approfondies sur l'exploration, etc. Version gratuite en ligne (pour le moment)!

Autres conseils

Xapian est une autre option pour vous. J'ai entendu dire qu'il évolue mieux que certaines implémentations de Lucene.

Découvrez nutch , il a été écrit par le même gars qui a créé Lucene ( Doug Cutting ).

Il me semble que la plus grande partie est l’indexation des sites. Faire des robots pour parcourir Internet et analyser leur contenu.

Un ami et moi-même parlions de la façon dont Google et les autres moteurs de recherche doivent être étonnants. Des millions de résultats en moins d'une demi-seconde? Fou. Je pense qu'ils pourraient avoir des résultats de recherche prédéfinis pour les éléments fréquemment recherchés.

modifier: Ce site est plutôt intéressant.

Je commencerais par un projet existant, tel que le moteur de recherche open source de Wikia.

[D'après ce que j'ai compris, le projet Wikia Search est terminé. Cependant, je pense qu’être impliqué dans un projet open source existant est un bon moyen de s’engager dans une entreprise de cette taille.]

http://re.search.wikia.com/about/get_involved.html

Si vous souhaitez en savoir plus sur la théorie de la recherche d'informations et sur certains détails techniques relatifs à la mise en oeuvre de moteurs de recherche, je vous recommande le livre Gestion des gigaoctets par Ian Witten, Alistair Moffat et Tim C. Bell. (Divulgation: Alistair Moffat était le superviseur de mon université.) Bien que cela date un peu (la première édition est parue en 1994 et la seconde en 1999 - qu’en est-il de la gestion des gigaoctets maintenant?), La théorie sous-jacente est toujours valable et une excellente introduction à l'indexation et à l'utilisation de la compression dans les systèmes d'indexation et de récupération.

Je suis également intéressé par le moteur de recherche. J'ai recommandé Apache Hadoop MapReduce et Apache Lucene. Accélérer avec Hadoop Cluster est la meilleure solution.

Il y a des ports de Lucene. Zend en a un disponible gratuitement. Jetez un coup d’œil à ce petit didacticiel: http://devzone.zend.com/node/ view / id / 91

Voici une approche légèrement différente, si vous n'êtes pas intéressé par la programmation mais par les résultats: envisagez de le construire à l'aide de API du moteur de recherche personnalisé Google .

Avantages:

  • Google fait le gros du travail pour vous
  • Interface utilisateur familière et comportement de vos utilisateurs
  • Peut avoir quelque chose en place en quelques minutes
  • Nombreuses fonctionnalités de personnalisation

Inconvénients:

  • Vous n'écrivez pas de code, vous n'avez donc aucune possibilité d'apprentissage
  • Tout ce que vous souhaitez rechercher doit être public & amp; dans l'index Google déjà
  • Votre résultat est lié à Google
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top