Als ik een zoekmachine zou willen bouwen, hoe zou ik dan beginnen? [gesloten]

Gesloten . Deze vraag moet meer gericht zijn . Het accepteert momenteel geen antwoorden.

Reacties

  • Als je geen ' ervaring hebt met het schrijven van code, hoe zit het dan met leren coderen? Het bouwen van een zoekmachine is nogal een overkill voor iemand die nieuw is met programmeren.
  • Zoals Terence zegt, is het niet iets voor degenen die nieuw zijn met programmeren. Elke zoekmachine die überhaupt goed is, is meestal een vrij gecompliceerd stuk werk, er is een reden waarom Google zo groot is, dat ze een zeer moeilijke taak redelijk goed doen. Zelfs doorgewinterde programmeurs geven de voorkeur aan iets dat vooraf is gebouwd. Als je een idee geeft waarvoor je het wilt, kunnen we je misschien in de goede richting wijzen.
  • Begin met een kleiner project. Het bouwen van een zoekmachine vereist een enorme hoeveelheid code. En hoe verzamel je alle data voor je zoekmachine? U ' zult veel meer code en een enorme infrastructuur nodig hebben. Echt, begin alsjeblieft aan kleinere projecten en werk eraan, anders raak je gewoon gefrustreerd.
  • Dit boek heeft me geholpen te begrijpen wat zoekmachines zijn en hoe ze zijn gebouwd: nlp.stanford.edu/IR-book

Antwoord

Ik schreef dit voor een blog dat ik vroeger had toen … het niet langer op het web stond, dus .. hier is het! :

Hoe schrijf je een zoekmachine

Darren Rowse op probolgger.net houdt een Group Writing Project over alles “Hoe”. Dit is een van de weinige blogs die ik regelmatig lees, dus ik bedenk waarom ik voor de verandering niet iets schrijf dat de moeite waard is om te lezen, in plaats van mijn standaard gewelddadige tirade waarbij ik uiteindelijk Hugo Chaves in de keel dreig te steken.

Ik besloot te schrijven “Hoe schrijf ik een zoekmachine”. Ik koos dit onderwerp om twee redenen:

  1. Er is niet veel goede informatie hierover op internet.
  2. Ik ben er momenteel een aan het schrijven voor een van mijn klanten.

Mijn klant is een online verkoper van aanzienlijke omvang, dus ik zoek niet het hele internet door alleen hun site, meer specifiek alleen de producten te koop op hun site. Niettemin kunnen dezelfde technieken worden gebruikt voor het schrijven van complexere technieken die worden gebruikt voor het zoeken op internet. Ik weet dat dit geen technische blog is, dus ik zal niet te diep ingaan op de technische details, noch zal ik het hebben over de vereisten voor hardware \ verwerkingsvermogen of webcrawlen.

Ik gebruik een vrij eenvoudige techniek , Ik heb een tabel (tblKeywords) met drie velden:

  1. Itemid (als je een zoekopdracht op internet uitvoert, zou dit de URL zijn)
  2. KeyWord (geïndexeerd trefwoord)
  3. Gewicht (dit is een numerieke waarde van 1-100, hoe hoger dit getal, des te belangrijker (gewicht) het zoekwoord draagt) * PK = ItemID + KeyWord

Het eerste wat ik doe, is individuele woorden verzamelen van overal die relevant zijn. Voor mijn opdrachtgever trek ik woorden aan de productentafel. Specifiek uit de velden Itemid, ItemName, ItemShortDescription, ItemLongDescription, Manufacturer, ManufacturerSKU, Category1, Category2, Category3 ect. Als u webpaginas indexeert, kunt u gegevens ophalen uit de paginatekst, paginatitel, de URL of links op andere paginas die terugverwijzen naar de pagina die wordt geïndexeerd.

De gewichtswaarde wordt bepaald door waar het trefwoord vandaan kwam . In mijn geval zou de SKU van de Fabricage van het item bijvoorbeeld een gewicht van 100 krijgen, terwijl een woord van de naam van het item een gewicht van 25 kan krijgen. Een woord van de ItemLongDescription kan een gewicht van 5 krijgen. Als u indexeert webpaginas de woorden van de paginatitel kunnen een gewicht van 75 krijgen, terwijl een vetgedrukt woord van de paginatekst een gewicht van 10 kan krijgen. Als een woord meer dan eens of \ en op meer dan één plaats wordt herhaald, zou u de gewicht voor elke keer dat het voorkomt. Als het woord Shirt bijvoorbeeld van twee plaatsen komt voor ItemId = 12345, The ItemName (gewicht van 25) en twee keer voorkomt in ItemLongDescription (gewicht van 5 x2 = 10), zou het woord shirt een totaalgewicht van 35 hebben voor ItemId = 12345.

Als iemand zoekt naar “roze shirt”, zoek ik in mijn tabel naar alle gevallen van de woorden “Roze” of “Shirt” en Totaal de gewichten. Toont de items met het hoogste totaalgewicht bovenaan.

SQL:

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

Dus hier heb je het, een basis (en snel) zoekmachine. Er is natuurlijk meer te doen, zoals het verwijderen van interpunctie, HTML-code en waardeloze trefwoorden zoals “en”, “als”, “of”. Dit heeft geen betrekking op het zoeken naar sleutelzinnen, maar u kunt een soortgelijk systeem voor zinnen gebruiken als u erachter kunt komen waar ze beginnen en eindigen.

Reacties

  • bedankt mooi antwoord. wat zou u ook voorstellen om producten te groeperen. Ik bedoel, je hebt ongeveer 1 miljoen gecrawlde productpaginas van verschillende websites. u wilt dezelfde producten op verschillende websites groeperen: programmers.stackexchange.com/questions/134292/…
  • @Monster – Hoe zit het met het item ' s Fabrikant \ SKU Combinatie?
  • U kunt deze gegevens ook kopen (huren) van bedrijven zoals Etilize
  • kun je het wat meer uitleggen, want ik heb het niet begrepen. Dank je.
  • Een " ok " praktisch antwoord. Dit negeert echter het hele studiegebied, ook bekend als " Informatie ophalen ". In termen van " In de goede richting wijzen " IR zou in mijn gedachten beter zijn geweest.

Answer

De vrij verspreide versie van Inleiding tot het ophalen van informatie gaat naar wees uw belangrijkste referentiemateriaal. Het behandelt zoeken (informatie ophalen) van basis- tot geavanceerd niveau.

Antwoord

Zoekmachines zijn gebouwd op webcrawlers , moet u uitzoeken hoe u een van deze sukkels kunt bouwen voordat u een website kunt ontwikkelen om de resultaten weer te geven (u heeft een snelle, efficiënte database nodig om erbij).

Opmerkingen

  • Een zoekmachine kan de output van een webcrawler gebruiken, maar ze hebben verder weinig met elke andere. Bovendien is het onwaarschijnlijk dat een snelle, efficiënte database van de SQL-variant veel zal helpen bij dit streven. Zoekmachines worden over het algemeen gebouwd met behulp van geïnverteerde bestandsindexeringsschemas, die ' helemaal niet in de SQL-mal passen.
  • @Marcelo Cantos: geïnverteerde bestandsindexering klinkt ingewikkeld: -0 – Bedankt voor het helpen verduidelijken van mijn antwoord!

Antwoord

Een zoekmachine bouwen

Dit is een inleidende cursus voor CS die op de 20e begint, ik raad je aan om het eens te bekijken, het wordt gratis aangeboden .

Reacties

  • Sebastian Thrun is ook nauw verbonden met Google.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *