Qualcuno può indicarmi la giusta direzione? Non ho davvero esperienza nella scrittura di codice ma sono uno studente veloce. Non sto cercando di dire che sarà facile ma spero che qualcuno mi possa aiutare ...
Qualcuno può indicarmi la giusta direzione? Non ho davvero esperienza nella scrittura di codice ma sono uno studente veloce. Non sto cercando di dire che sarà facile ma spero che qualcuno mi possa aiutare ...
Risposte:
Ho scritto questo per un blog che avevo di solito quando ... non è più sul web quindi ... eccolo! :
Come scrivere un motore di ricerca
Darren Rowse su probolgger.net sta organizzando un progetto di scrittura di gruppo su qualsiasi cosa "How to". Questo è uno dei pochi blog che leggo regolarmente, quindi immagino perché non scrivere qualcosa che valga la pena leggere per un cambiamento, piuttosto il mio rant violento standard in cui finirò per minacciare di pugnalare alla gola Hugo Chaves.
Ho deciso di scrivere "Come scrivere un motore di ricerca". Ho scelto questo argomento per due motivi:
Il mio cliente è un rivenditore online di dimensioni significative, quindi non cerco su tutto il Web solo il loro sito, più specificamente solo i prodotti in vendita sul loro sito. Tuttavia le stesse tecniche possono essere utilizzate per scrivere più complesse utilizzate per la ricerca in Internet. So che questo non è un blog tecnico, quindi non approfondirò troppo i dettagli tecnici, né discuterò dei requisiti hardware / di potenza di elaborazione o della scansione del Web.
Sto usando una tecnica abbastanza semplice, ho table (tblKeywords) con tre campi:
La prima cosa che faccio è raccogliere singole parole da qualsiasi luogo rilevante. Per il mio cliente tirerò a parole la tabella dei prodotti. In particolare dai campi Itemid, ItemName, ItemShortDescription, ItemLongDescription, Manufacturer, ManufacturerSKU, Category1, Category2, Category3 ect. Se si stanno indicizzando pagine Web, è possibile estrarre i dati dal testo della pagina, dal titolo della pagina, dall'URL o dai collegamenti su altre pagine che rimandano alla pagina indicizzata.
Il valore di ponderazione è determinato dalla provenienza della parola chiave. Ad esempio, nel mio caso lo SKU della produzione dell'articolo avrebbe un peso di 100, mentre una parola dal nome dell'articolo può avere un peso di 25. Una parola dalla descrizione ItemLong può avere un peso di 5. Se stai indicizzando le pagine web le parole dal titolo della pagina può 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 punto, si sommerebbe il peso per ogni volta capita. Ad esempio, se la parola "Shirt" viene da due punti per ItemId = 12345, ItemName (peso di 25) e appare due volte in ItemLongDescription (Peso di 5 x2 = 10) la parola "shirt" avrebbe un peso totale di 35 per ItemId = 12345.
Se qualcuno fa una ricerca di "camicia rosa" cerco nella mia tabella tutte le occorrenze delle parole "rosa" o "camicia" e totale i pesi. Mostrando gli articoli con il peso totale più alto in cima.
SQL:
Select Itemid, sum(weight) as totWeight from tblKeywords
group by itemId having keyword in ('pink','shirt')
Quindi eccolo qui, un motore di ricerca di base (e veloce). Ovviamente c'è ancora molto da fare, come eliminare la punteggiatura, il codice HTML e parole chiave senza valore come "e", "se", "o". Questo non riguarda la ricerca di frasi chiave, ma puoi usare un sistema simile per le frasi se riesci a capire dove iniziano e finiscono.
La bozza di Introduzione all'Information Retrieval distribuita gratuitamente sarà il tuo materiale di riferimento principale. Gestisce la ricerca (recupero di informazioni) dal livello base a quello avanzato.
I motori di ricerca sono basati su crawler web , dovrai capire come costruire uno di questi succhiatori prima di poter sviluppare un sito Web per visualizzare i suoi risultati (avrai bisogno di un database veloce ed efficiente per andare con esso).
Costruire un motore di ricerca
Questo è un corso introduttivo a CS che inizierà il 20, ti consiglio di dare un'occhiata, è offerto gratuitamente.