Se volessi costruire un motore di ricerca, come dovrei iniziare? [chiuso]

Chiuso . Questa domanda deve essere più mirata . Attualmente non accetta risposte.

Commenti

  • Se ' non hai esperienza nello scrivere codice, che ne dici di imparare prima a codificare? Costruire un motore di ricerca è una specie di eccessivo per qualcuno che non conosce la programmazione.
  • Come dice Terence, non è qualcosa per chi è nuovo alla programmazione. Qualsiasi motore di ricerca che sia affatto buono tende ad essere un lavoro abbastanza complicato, cè una ragione per cui Google è così imponente, svolgono un compito molto difficile abbastanza bene. Anche i programmatori esperti tendono a preferire luso di qualcosa di pre-costruito. Se dai unidea di cosa vuoi, forse possiamo indicarti la giusta direzione.
  • Inizia con un progetto più piccolo. La creazione di un motore di ricerca richiede una quantità enorme di codice. E come raccogli tutti i dati per il tuo motore di ricerca? ' avrai bisogno di molto più codice e di unenorme infrastruttura. Davvero, per favore inizia con progetti più piccoli e lavora o ti sentirai frustrato.
  • Questo libro mi ha aiutato a capire cosa sono i motori di ricerca e come sono costruiti: nlp.stanford.edu/IR-book

Risposta

Lho scritto per un blog che avevo tempo fa quando …. non è più sul web quindi .. eccolo qui! :

Come scrivere un motore di ricerca

Darren Rowse su probolgger.net sta tenendo un progetto di scrittura di gruppo su qualsiasi cosa “Come fare”. Questo è uno dei pochi blog che leggo regolarmente, quindi immagino perché non scrivere qualcosa che valga la pena leggere tanto per cambiare, piuttosto il mio solito sfogo violento in cui finirò per minacciare di pugnalare Hugo Chaves alla gola.

Ho deciso di scrivere “Come scrivere un motore di ricerca”. Ho scelto questo argomento per due motivi:

  1. Non ci sono molte buone informazioni su questo sul Web.
  2. Al momento ne sto scrivendo uno per uno dei miei clienti.

Il mio cliente è un rivenditore online di dimensioni significative, quindi non cerco in tutto il Web solo il loro sito, più specificamente solo il prodotti in vendita sul loro sito. Tuttavia le stesse tecniche possono essere utilizzate per la scrittura più complessa utilizzata per la ricerca in Internet. So che questo non è un blog di tecnologia, quindi non approfondirò gli aspetti tecnici, né discuterò dei requisiti di hardware \ potenza di elaborazione o della scansione del Web.

Sto usando una tecnica abbastanza semplice , Ho una tabella (tblKeywords) con tre campi:

  1. Itemid (se stai facendo una ricerca sul web questo sarebbe URL)
  2. KeyWord (parola chiave indicizzata)
  3. Peso (questo è un valore numerico compreso tra 1 e 100, maggiore è questo numero, più significativo (peso) trasporta la parola chiave) * PK = ItemID + KeyWord

La prima cosa che faccio è raccogliere singole parole da qualsiasi luogo che sia rilevante. Per il mio cliente tirerò le parole nella tabella dei prodotti. In particolare dai campi Itemid, ItemName, ItemShortDescription, ItemLongDescription, Manufacturer, ManufacturerSKU, Category1, Category2, Category3 ect. Se stai indicizzando le pagine web, puoi estrarre dati dal testo della pagina, dal titolo della pagina, dallURL o dai link su altre pagine che rimandano alla pagina che viene indicizzata.

Il valore del peso è determinato dalla provenienza della parola chiave . Ad esempio, nel mio caso, lo SKU della “fabbricazione” dellarticolo otterrebbe un peso di 100, mentre una parola dal nome dellarticolo può avere un peso di 25. Una parola dalla descrizione delloggetto può avere un peso di 5. Se stai indicizzando pagine web le parole dal titolo della pagina possono avere un peso di 75 mentre una parola in grassetto dal testo della pagina può avere un peso di 10. Se una parola viene ripetuta in più di una volta o \ e in più di un posto dovresti sommare il peso per ogni volta che si verifica. Ad esempio Se la parola “Shirt” proviene da due posizioni per ItemId = 12345, ItemName (peso di 25) e appare due volte in ItemLongDescription (Weight of 5 x2 = 10) la parola “shirt” avrebbe un peso totale di 35 per ItemId = 12345.

Se qualcuno cerca “camicia rosa” cerco nella mia tabella tutte le occorrenze delle parole “rosa” o “camicia” e il totale dei pesi. Mostra gli elementi con il peso totale più alto in alto.

SQL:

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

Ecco qua, un semplice (e veloce) motore di ricerca. Ovviamente cè molto altro da fare, come eliminare la punteggiatura, il codice HTML e parole chiave inutili come “e”, “se”, “o”. Questo non risolve la ricerca di frasi chiave, ma puoi utilizzare un sistema simile per le frasi se riesci a capire dove iniziano e finiscono.

Commenti

  • grazie bella risposta. cosa suggeriresti anche per raggruppare i prodotti. Voglio dire che hai circa 1 milione di pagine di prodotti sottoposte a scansione da diversi siti web. desideri raggruppare gli stessi prodotti su diversi siti web: programmers.stackexchange.com/questions/134292/…
  • @Monster – Che ne dici della combinazione ' s Produttore \ SKU?
  • Puoi anche acquistare (noleggiare) questi dati da aziende come Etilize
  • puoi spiegarlo un po di più perché non lho capito. Grazie.
  • Una risposta pratica " ok ". Tuttavia, questo ignora lintero campo di studio noto anche come " Recupero informazioni ". In termini di " puntare nella giusta direzione " IR sarebbe stato meglio nella mia mente.

Risposta

La bozza distribuita gratuitamente di Introduzione al recupero delle informazioni sta per essere il tuo principale materiale di riferimento. Gestisce la ricerca (recupero delle informazioni) dal livello base a quello avanzato.

Risposta

I motori di ricerca sono basati su web crawler , dovrai capire come costruire uno di questi polloni prima di poter sviluppare un sito web per visualizzarne i risultati (avrai bisogno di un database veloce ed efficiente per andare con esso).

Commenti

  • Un motore di ricerca può consumare loutput di un web crawler, ma per il resto hanno ben poco a che fare con ciascuno altro. Inoltre, è improbabile che un database veloce ed efficiente della varietà SQL sia di grande aiuto in questo sforzo. I motori di ricerca sono generalmente costruiti utilizzando schemi di indicizzazione dei file invertiti, che ' non si adattano affatto allo stampo SQL.
  • @Marcelo Cantos: lindicizzazione dei file invertiti sembra complicata: -0 – Grazie per avermi aiutato a chiarire la mia risposta!

Risposta

Creazione di un motore di ricerca

Questo è un corso introduttivo a CS che inizierà il 20, ti consiglio di dare unocchiata, è offerto gratuitamente .

Commenti

  • Anche Sebastian Thrun è strettamente associato a Google.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *