Hvis jeg ønsket å bygge en søkemotor, hvordan skulle jeg starte? [lukket]

Stengt . Dette spørsmålet må være mer fokusert . Det aksepteres for øyeblikket ikke svar.

Kommentarer

  • Hvis du ikke har ' ikke har noen erfaring med å skrive kode, hva med å lære å kode først? Å bygge en søkemotor er litt av en overkill for noen som er ny innen programmering.
  • Som Terence sier, er det ikke noe for de som er nye med programmering. Enhver søkemotor som er bra i det hele tatt, har en tendens til å være et ganske komplisert arbeid, det er en grunn til at Google er så massiv at de gjør en veldig vanskelig oppgave ganske bra. Selv erfarne programmerere pleier å foretrekke å bruke noe forhåndsbygd. Hvis du gir deg en ide om hva du vil ha det til, kan vi kanskje peke deg i riktig retning.
  • Start med et mindre prosjekt. Å bygge en søkemotor innebærer enorm mengde kode. Og hvordan samler du alle dataene til søkemotoren din? Du ' trenger mye mer kode og en enorm infrastruktur. Virkelig, vær så snill å begynne på mindre prosjekter og jobbe deg, ellers blir du frustrert.
  • Denne boka hjalp meg med å forstå hva søkemotorer er og hvordan de er bygget: nlp.stanford.edu/IR-book

Svar

Jeg skrev dette for en blogg jeg pleide å ha vei tilbake når …. det ikke lenger på nettet så .. her er det! :

Hvordan skrive en søkemotor

Darren Rowse over på probolgger.net holder et Group Writing-prosjekt om hva som helst «How to». Dette er en av de få bloggene jeg leser regelmessig, så jeg skjønner hvorfor ikke skrive noe som er verdt å lese for en forandring, snarere er mitt vanlige voldsomme rant der jeg ender med å true Hugo Chaves i strupen.

Jeg bestemte meg for å skrive «Hvordan skrive en søkemotor». Jeg valgte dette emnet av to grunner:

  1. Det er ikke mye god info om dette på nettet.
  2. Jeg skriver for øyeblikket en for en av mine klienter.

Min klient er en nettforhandler av betydelig størrelse, så jeg søker ikke på hele nettet bare nettstedet deres, mer spesifikt bare produkter til salgs på deres side. Ikke desto mindre kan de samme teknikkene brukes til å skrive mer komplekse som brukes til å søke på internett. Jeg vet at dette ikke er en teknisk blogg, så jeg vil ikke gå for dypt inn i det tekniske, og jeg vil heller ikke diskutere maskinvare \ prosesseringskrav til strøm, eller nettgjennomgang.

Jeg bruker en ganske enkel teknikk , Jeg har tabell (tblKeywords) med tre felt:

  1. Itemid (Hvis du gjør et websøk vil dette være URL)
  2. KeyWord (Indexed Keyword)
  3. Vekt (dette er en numerisk verdi fra 1-100 jo høyere dette tallet er mer viktig (vekt) nøkkelordet har) * PK = ItemID + KeyWord

Det første jeg gjør er å samle enkeltord fra hvor som helst som er relevant. For min klient vil jeg trekke ord i produktbordet. Spesielt fra feltene Itemid, ItemName, ItemShortDescription, ItemLongDescription, Manufacturer, ManufacturerSKU, Category1, Category2, Category3 ect. Hvis du indekserer nettsider, kan du hente data fra sideteksten, sidetittelen, URL-en eller lenker på andre sider som lenker tilbake til siden som indekseres.

Vektverdien bestemmes av hvor nøkkelordet kom fra . For eksempel i mitt tilfelle vil varen «s Manufacture» s SKU få en vekt på 100, mens et ord fra varenavnet kan få en vekt på 25. Et ord fra ItemLongDescription kan få en vekt på 5. Hvis du er indekserer nettsider kan ordene fra sidetittelen få en vekt på 75 mens et ord med fet skrift fra sideteksten kan få vekt på 10. Hvis et ord gjentas på mer enn en gang eller \ og på mer enn ett sted, vil du legge sammen vekt for hver gang det oppstår. For eksempel Hvis ordet «skjorte» kommer fra to steder for ItemId = 12345, vil Varenavnet (vekt 25) vises to ganger i ItemLongDescription (Vekt 5 x2 = 10), ville ordet «skjorte» ha totalvekt på 35 for ItemId = 12345.

Hvis noen søker etter «rosa skjorte», søker jeg på bordet mitt for alle forekomster av ordene «Rosa» eller «Skjorte» og Totalvektene. Viser elementene med høyest totalvekt på toppen.

SQL:

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

Så her har du det, en grunnleggende (og rask) søkemotor. Selvfølgelig er det mer å gjøre, for eksempel å fjerne tegnsetting, HTML-kode og verdiløse nøkkelord som «og», «hvis», «eller». Dette adresserer ikke søking etter nøkkelfraser, men du kan bruke et lignende system for fraser hvis du kan finne ut hvor de begynner og slutter.

Kommentarer

  • takk fint svar. hva vil du også foreslå for gruppering av produkter. Jeg mener du har omtrent 1 million gjennomsøkte produktsider fra forskjellige nettsteder. du vil gruppere de samme produktene på forskjellige nettsteder: programmers.stackexchange.com/questions/134292/…
  • @Monster – Hva med varen ' s Produsent \ SKU-kombinasjon?
  • Du kan også kjøpe (leie) disse dataene fra selskaper som Utnytt
  • kan du forklare det litt mer fordi jeg ikke fikk det. Takk.
  • Et " ok " praktisk svar. Dette ignorerer imidlertid hele studiefeltet aka " Informasjonsinnhenting ". Når det gjelder " Peker i riktig retning " IR hadde vært bedre i mitt sinn.

Svar

Det fritt distribuerte utkastet til Introduksjon til informasjonsinnhenting kommer til være ditt viktigste referansemateriale. Den håndterer søk (informasjonsinnhenting) fra grunnleggende til avansert nivå.

Svar

Søkemotorer er bygget på webcrawlere , må du finne ut hvordan du bygger en av disse suckers før du kan utvikle et nettsted for å vise resultatene (du trenger en rask, effektiv database for å gå med det.

Kommentarer

  • En søkemotor kan forbruke utdataene fra en web-crawler, men de har ellers veldig lite å gjøre med hver annen. Videre er det lite sannsynlig at en rask, effektiv database av SQL-variasjonen vil hjelpe mye i dette arbeidet. Søkemotorer er vanligvis bygget ved hjelp av inverterte filindekseringsskjemaer, som ikke ' ikke passer til SQL-formen i det hele tatt.
  • @Marcelo Cantos: Invertert filindeksering høres komplisert ut: -0 – Takk for at du hjalp til med å avklare svaret mitt!

Svar

Bygg en søkemotor

Dette er et introduksjonskurs til CS som begynner den 20. Jeg foreslår at du sjekker det, det tilbys gratis .

Kommentarer

  • Sebastian Thrun er også nært knyttet til Google.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *