Kommentarer
- Om du inte ' inte har någon erfarenhet av att skriva kod, vad sägs om att lära dig att koda först? Att bygga en sökmotor är en typ av överdrift för någon som är ny inom programmering.
- Som Terence säger är det inte något för dem som är nya inom programmering. Alla sökmotorer som är bra alls tenderar att vara ett ganska komplicerat arbete, det finns en anledning till att Google är så massivt att de gör en mycket svår uppgift ganska bra. Även erfarna programmerare brukar föredra att använda något förbyggt. Om du ger dig en uppfattning om vad du vill ha det för kan vi kanske peka i rätt riktning.
- Börja med ett mindre projekt. Att bygga en sökmotor innebär enorma mängder kod. Och hur samlar du all information till din sökmotor? Du ' Du behöver mycket mer kod och en enorm infrastruktur. Verkligen, snälla starta på mindre projekt och arbeta upp annars blir du frustrerad.
- Den här boken hjälpte mig att förstå vad sökmotorer är och hur de är uppbyggda: nlp.stanford.edu/IR-book
Svar
Jag skrev detta för en blogg jag brukade ha vägen tillbaka när …. det inte längre på webben så .. här är det! :
Hur man skriver en sökmotor
Darren Rowse över på probolgger.net håller ett gruppskrivprojekt om vad som helst ”How to”. Det här är en av få bloggar som jag läser regelbundet så jag tänker på varför inte skriva något som är värt att läsa för en förändring, snarare mitt vanliga våldsamma rant där jag slutar hota att hugga Hugo Chaves i halsen.
Jag bestämde mig för att skriva ”Hur man skriver en sökmotor”. Jag valde det här ämnet av två skäl:
- Det finns inte mycket bra information om detta på webben.
- Jag skriver för närvarande en för en av mina kunder.
Min klient är en online-återförsäljare av stor storlek, så jag söker inte på hela webben bara deras webbplats, mer specifikt bara produkter till salu på deras webbplats. Ändå kan samma tekniker användas för att skriva mer komplexa som används för att söka på internet. Jag vet att det här inte är en teknisk blogg så jag kommer inte att gå för djupt in i det tekniska, och jag kommer inte heller att diskutera hårdvaru \ bearbetningskrav eller webbgenomsökning.
Jag använder en ganska enkel teknik , Jag har tabell (tblKeywords) med tre fält:
- Itemid (Om du gör en webbsökning skulle det vara URL)
- KeyWord (Indexed Keyword)
- Vikt (detta är ett numeriskt värde från 1-100 ju högre detta tal desto mer signifikant (vikt) har nyckelordet) * PK = ItemID + KeyWord
Det första jag gör är att samla enskilda ord från var som helst som är relevant. För min klient ska jag ta ord i produktbordet. Specifikt från fälten Itemid, ItemName, ItemShortDescription, ItemLongDescription, Manufacturer, ManufacturerSKU, Category1, Category2, Category3 ect. Om du indexerar webbsidor kan du hämta data från sidtext, sidrubrik, URL eller länkar på andra sidor som länkar till sidan som indexeras.
Viktvärdet bestäms av var nyckelordet kom ifrån . Till exempel i mitt fall skulle artikeln ”s Manufacture” SKU få en vikt på 100, medan ett ord från artikelnamnet kan få en vikt på 25. Ett ord från ItemLongDescription kan få en vikt på 5. Om du indexerar webbsidor kan orden från sidrubriken väga 75 medan ett ord med fetstil från sidtexten kan få vikt 10. Om ett ord upprepas mer än en gång eller \ och på mer än ett ställe skulle du lägga till vikt för varje gång det inträffar. Till exempel Om ordet ”Skjorta” kommer från två ställen för ItemId = 12345, skulle Artikelnamnet (vikt 25) visas två gånger i ItemLongDescription (Vikt 5 x2 = 10) skulle ordet ”shirt” ha en total vikt på 35 för ItemId = 12345.
Om någon söker efter ”rosa skjorta” söker jag i mitt bord efter alla fall av orden ”Rosa” eller ”Skjorta” och totala vikterna. Visar artiklar med högsta totalvikt överst.
SQL:
Select Itemid, sum(weight) as totWeight from tblKeywords group by itemId having keyword in ("pink","shirt")
Så här har du det, en grundläggande (och snabb) sökmotor. Naturligtvis finns det mer att göra, som att ta bort skiljetecken, HTML-kod och värdelösa nyckelord som ”och”, ”if”, ”eller”. Detta adresserar inte sökning efter nyckelfraser, men du kan använda ett liknande system för fraser om du kan ta reda på var de börjar och slutar.
Kommentarer
- tack trevligt svar. vad skulle du också föreslå för gruppering av produkter. Jag menar att du har ungefär 1 miljon genomsökta produktsidor från olika webbplatser. du vill gruppera samma produkter på olika webbplatser: programmerare.stackexchange.com/questions/134292/…
- @Monster – Vad sägs om artikeln ' Tillverkare \ SKU-kombination?
- Du kan också köpa (hyra) denna information från företag som Utnyttja
- kan du förklara det lite mer eftersom jag inte fick det. Tack.
- Ett " ok " praktiskt svar. Detta ignorerar dock hela studieområdet aka " Informationshämtning ". När det gäller " Pekar i rätt riktning " IR skulle ha varit bättre i mitt sinne.
Svar
Det fritt distribuerade utkastet till Introduktion till informationssökning kommer att vara ditt främsta referensmaterial. Den hanterar sökning (informationshämtning) från grundnivå till avancerad nivå.
Svar
Sökmotorer bygger på webbsökare måste du ta reda på hur du bygger en av dessa sugare innan du kan utveckla en webbplats för att visa resultaten (du behöver en snabb, effektiv databas för att gå med det).
Kommentarer
- En sökmotor kan konsumera produktionen från en webbsökare, men de har annars väldigt lite att göra med varje Övrig. Dessutom är det osannolikt att en snabb, effektiv databas av SQL-sorten kommer att hjälpa mycket i detta arbete. Sökmotorer är vanligtvis byggda med inverterade filindexeringsscheman, som inte ' inte passar SQL-formen alls. -0 – Tack för att du hjälpte till att klargöra mitt svar!
Svar
Detta är en introduktionskurs till CS som kommer att börja den 20: e, jag föreslår att du kolla in den, den erbjuds gratis .
Kommentarer
- Sebastian Thrun är också nära knuten till Google.