2009-07-05 12 views
5

Ho bisogno di sviluppare un motore di ricerca verticale come parte del sito web. I dati per il motore di ricerca provengono da siti Web di categorie specifiche. Immagino per questo che ho bisogno di avere un crawler che esegue la scansione di diversi (poche centinaia) siti (in una specifica categoria di business) ed estrarre contenuti e URL di prodotti e servizi. Altri tipi di pagine potrebbero essere irrilevanti. La maggior parte dei siti sono piccoli o piccoli (alcune centinaia di pagine al massimo). I prodotti hanno da 10 a 30 attributi.Sviluppo di un crawler e di un raschietto per un motore di ricerca verticale

Qualsiasi idea su come scrivere un crawler e un estrattore. Ho scritto alcuni crawler ed estrattori di contenuti usando le solite ruby ​​library, ma non un vero e proprio motore di ricerca. Immagino che, crawler, di tanto in tanto, si riattiva e scarica le pagine dai siti web. Ovviamente si seguiranno comportamenti educati come il controllo delle regole di esclusione dei robot. Mentre il content extractor può aggiornare il database dopo aver letto le pagine. Come sincronizzare il crawler e l'estrattore? Quanto dovrebbero essere integrati?

+0

Gli attributi di tutti i siti verranno memorizzati nella stessa posizione? Ad esempio, hai 30+ colonne su una tabella di database. – BenMaddox

risposta

1

Nel contesto aziendale di ricerca che io sono abituato a lavorare in,

  • crawler,

  • estrattori di contenuti,

  • indici dei motori di ricerca (e il caricamento dei contenuti in questi indici),

  • essere in grado di interrogare i dati in modo effciente e con una vasta gamma di eratori,

  • interfacce di programmazione alle tutti questi strati,

  • facoltativamente, dall'utente rivolto GUI

sono tutti gli argomenti separati.

(ad esempio, mentre l'estrazione informazioni utili da una pagina HTML VS file PDF VS MS Word sono concettualmente simili, la programmazione attuale per questi compiti sono ancora molto lavori in corso per qualsiasi soluzione generale.)

Si potrebbe voler esaminare la suite di strumenti open source di Lucene, capire come si integrano e, eventualmente, decidere che sarebbe più facile imparare come usare quegli strumenti (o altri simili), piuttosto che reinventare il grande , complicare la ruota.

Credo nei libri, quindi grazie alla tua domanda, ho scoperto questo libro e l'ho appena ordinato. Sembra una buona soluzione per una possibile soluzione al conumbrum dello strumento di ricerca.

http://www.amazon.com/Building-Search-Applications-Lucene-LingPipe/product-reviews/0615204252/ref=cm_cr_pr_hist_5?ie=UTF8&showViewpoints=0&filterBy=addFiveStar

Buona fortuna e fateci sapere cosa si scopre e l'approccio si decide di prendere.

3

Nutch si basa su Lucene e implementa già un crawler e diversi parser di documenti. Per la scalabilità è anche possibile hook it to Hadoop.