Kommentarer
- Hvis du ikke ' ikke har nogen erfaring med at skrive kode, hvad med at lære at kode først? At opbygge en søgemaskine er en slags overkill for en person, der er ny til programmering.
- Som Terence siger, er det ikke noget for dem, der er nye med programmering. Enhver søgemaskine, der overhovedet er god, har tendens til at være et ret kompliceret stykke arbejde, der er en grund til, at Google er så massiv, at de gør en meget hård opgave ret godt. Selv erfarne programmører har en tendens til at foretrække at bruge noget præ-bygget. Hvis du giver en ide om, hvad du vil have det til, kan vi måske pege dig i den rigtige retning.
- Start med et mindre projekt. Opbygning af en søgemaskine indebærer enorm mængde kode. Og hvordan samler du alle data til din søgemaskine? Du ' har brug for meget mere kode og en massiv infrastruktur. Virkelig, vær venlig at starte med mindre projekter og arbejde op, ellers bliver du bare frustreret.
- Denne bog hjalp mig med at forstå, hvad søgemaskiner er, og hvordan de er bygget: nlp.stanford.edu/IR-book
Svar
Jeg skrev dette til en blog jeg plejede at have vej tilbage, da …. det ikke længere på nettet, så .. her er det! :
Sådan skriver du en søgemaskine
Darren Rowse over på probolgger.net holder et Group Writing-projekt om noget “Hvordan man gør”. Dette er en af de få blogs, som jeg læser regelmæssigt, så jeg regner med, hvorfor jeg ikke skriver noget, der er værd at læse for en ændring, snarere min standard voldelige rant, hvor jeg ender med at true med at stikke Hugo Chaves i halsen.
Jeg besluttede at skrive “Hvordan man skriver en søgemaskine”. Jeg valgte dette emne af to grunde:
- Der er ikke meget god info om dette på nettet.
- Jeg skriver i øjeblikket en til en af mine klienter.
Min klient er en onlineforhandler af betydelig størrelse, så jeg søger ikke på hele nettet bare deres websted, mere specifikt bare produkter til salg på deres side. Ikke desto mindre kan de samme teknikker bruges til at skrive mere komplekse, som bruges til at søge på internettet. Jeg ved, at dette ikke er en teknologisk blog, så jeg vil ikke gå for dybt ind i det tekniske, og jeg vil heller ikke diskutere hardware \ behandling af strømkrav eller webcrawling.
Jeg bruger en ret simpel teknik , Jeg har en tabel (tblKeywords) med tre felter:
- Itemid (Hvis du laver en websøgning ville dette være URL)
- KeyWord (Indexed Keyword)
- Vægt (dette er en numerisk værdi fra 1-100 jo højere dette tal jo mere signifikant (vægt) nøgleordet bærer) * PK = ItemID + KeyWord
Første ting jeg gør er at samle individuelle ord fra ethvert sted, der er relevant. For min klient vil jeg trække ord i produktbordet. Specifikt fra felterne Itemid, ItemName, ItemShortDescription, ItemLongDescription, Producent, Producent SKU, Category1, Category2, Category3 ect. Hvis du indekserer websider, kan du trække data fra sideteksten, sidetitlen, URLen eller links på andre sider, der linker tilbage til den side, der indekseres.
Vægtværdien bestemmes af, hvor nøgleordet kom fra . For eksempel i mit tilfælde Varen “s Fremstilling” SKU ville få en vægt på 100, mens et ord fra varenavnet kan få en vægt på 25. Et ord fra ItemLongDescription kan få en vægt på 5. Hvis du indekserer websider kan ordene fra sidetitlen få en vægt på 75, mens et ord med fed skrift fra sideteksten kan få en vægt på 10. Hvis et ord gentages mere end en gang eller \ og på mere end et sted, tilføjer du vægt for hver gang det sker. For eksempel Hvis ordet “Shirt” kommer fra to steder for ItemId = 12345, vil ItemName (vægt 25) og vises to gange i ItemLongDescription (Vægt 5 x2 = 10), ville ordet “shirt” have en samlet vægt på 35 for ItemId = 12345.
Hvis nogen søger efter “lyserød skjorte”, søger jeg i mit bord efter alle forekomster af ordene “Lyserød” eller “Trøje” og Totalvægten. Viser de emner, der har den højeste samlede vægt ovenpå.
SQL:
Select Itemid, sum(weight) as totWeight from tblKeywords group by itemId having keyword in ("pink","shirt")
Så her har du det, en grundlæggende (og hurtig) søgemaskine. Selvfølgelig er der mere at gøre, såsom at fjerne tegnsætning, HTML-kode og værdiløse nøgleord som “og”, “hvis”, “eller”. Dette adresserer ikke søgning efter nøglesætninger, men du kan bruge et lignende system til sætninger, hvis du kan finde ud af, hvor de starter og slutter.
Kommentarer
- tak dejligt svar. hvad vil du også foreslå til gruppering af produkter. Jeg mener, du har ligesom 1 million gennemsøgte produktsider fra forskellige websteder. du vil gruppere de samme produkter på tværs af forskellige websteder: programmers.stackexchange.com/questions/134292/…
- @Monster – Hvad med varen ' s Producent \ SKU-kombination?
- Du kan også købe (leje) disse data fra virksomheder som Brug
- kan du forklare det lidt mere, fordi jeg ikke fik det. Tak.
- Et " ok " praktisk svar. Dette ignorerer dog hele studiefeltet aka " Hentning af information ". Med hensyn til " Peger i den rigtige retning " IR ville have været bedre i mit sind.
Svar
Det frit distribuerede kladde af Introduktion til informationssøgning skal være dit primære referencemateriale. Det håndterer søgning (informationssøgning) fra grundlæggende til avanceret niveau.
Svar
Søgemaskiner er bygget på webcrawlere , skal du finde ud af, hvordan du bygger en af disse sutter, før du kan udvikle et websted til at vise resultaterne (du skal bruge en hurtig, effektiv database til gå med det).
Kommentarer
- En søgemaskine forbruger muligvis output fra en webcrawler, men de har ellers meget lidt at gøre med hver Andet. Desuden vil en hurtig, effektiv database af SQL-sorten sandsynligvis ikke hjælpe meget i denne bestræbelse. Søgemaskiner er generelt bygget ved hjælp af inverterede filindekseringsordninger, der slet ikke ' passer til SQL-formen.
- @Marcelo Cantos: Indeksering af inverteret fil lyder kompliceret: -0 – Tak for at hjælpe med at afklare mit svar!
Svar
Dette er et introduktionskursus til CS, der begynder den 20. Jeg foreslår, at du tjekker det ud, det tilbydes gratis .
Kommentarer
- Sebastian Thrun er også tæt knyttet til Google.