Kdybych chtěl vytvořit vyhledávač, jak bych začal? [uzavřeno]

Zavřeno . Tato otázka musí být více zaměřena . Momentálně nepřijímá odpovědi.

Komentáře

  • Pokud nemáte ' žádné zkušenosti s psaním kódu, co takhle naučit se nejprve kódovat? Vytváření vyhledávače je pro někoho nového v programování trochu přehnané.
  • Jak říká Terence, není to nic pro ty, kdo začínají programovat. Jakýkoli vyhledávač, který je vůbec dobrý, má tendenci být poměrně komplikovanou prací, existuje důvod, proč je Google tak obrovský, že docela dobře zvládá velmi těžký úkol. I ostřílení programátoři mají tendenci upřednostňovat použití něčeho předem vyrobeného. Pokud máte představu o tom, co chcete, možná vás můžeme nasměrovat správným směrem.
  • Začněte s menším projektem. Budování vyhledávače vyžaduje obrovské množství kódu. A jak shromažďujete všechna data pro svůj vyhledávač? Budete ' potřebovat mnohem více kódu a rozsáhlou infrastrukturu. Opravdu prosím začněte s menšími projekty a pracujte, jinak vás to jen zneklidní.
  • Tato kniha mi pomohla pochopit, co jsou vyhledávače a jak jsou postaveny: nlp.stanford.edu/IR-book

Odpověď

Napsal jsem to pro blog Míval jsem cestu zpět, když …. už ne na webu, takže .. tady to je! :

Jak napsat vyhledávač

Darren Rowse na probolgger.net pořádá projekt skupinového psaní na cokoli „Jak na to“. Toto je jeden z mála blogů, které pravidelně čtu, takže mě napadá, že pro změnu nenapíšu něco, co by stálo za přečtení, ale můj standardní násilný chvástat, kde se nakonec vyhrožuji bodnutím Huga Chavese do krku.

Rozhodl jsem se napsat „Jak napsat vyhledávač“. Toto téma jsem si vybral ze dvou důvodů:

  1. Na webu o tom není mnoho dobrých informací.
  2. V současné době píšu jeden pro jednoho ze svých klientů.

Můj klient je online maloobchod s významnou velikostí, takže neprohledávám celý web pouze jeho stránky, konkrétněji produkty k prodeji na jejich webu. Stejné techniky lze nicméně použít pro psaní složitějších technik používaných pro vyhledávání na internetu. Vím, že se nejedná o technologický blog, takže nebudu zacházet příliš hluboko do technických podrobností, ani nebudu hovořit o požadavcích na hardware \ výpočetní výkon nebo procházení webu.

Používám poměrně jednoduchou techniku , Mám tabulku (tblKeywords) se třemi poli:

  1. Itemid (Pokud provádíte vyhledávání na webu, byla by to adresa URL)
  2. KeyWord (indexované klíčové slovo)
  3. Hmotnost (jedná se o číselnou hodnotu od 1 do 100, čím vyšší je toto číslo, tím významnější je (váha), kterou klíčové slovo nese) * PK = ItemID + KeyWord

První věc, kterou udělám, je shromáždit jednotlivá slova z libovolného relevantního místa. Za svého klienta vytáhnu slova produktová tabulka. Konkrétně z polí Itemid, ItemName, ItemShortDescription, ItemLongDescription, Výrobce, ManufacturerSKU, Kategorie1, Kategorie2, Kategorie3 atd. Pokud indexujete webové stránky, můžete načíst data z textu stránky, názvu stránky, adresy URL nebo odkazů na jiné stránky, které odkazují zpět na indexovanou stránku.

Hodnota váhy je určena tím, odkud klíčové slovo pochází . Například v mém případě by položka SKU položky „Výroba“ získala váhu 100, zatímco slovo z názvu položky může mít váhu 25. Slovo z položky ItemLongDescription může mít váhu 5. Pokud indexujete webové stránky mohou mít slova z názvu stránky váhu 75, zatímco slovo tučně z textu stránky může mít váhu 10. Pokud se slovo opakuje vícekrát nebo \ a na více než jednom místě, sečte se váhu pokaždé, když k ní dojde. Například pokud slovo „Shirt“ pochází ze dvou míst pro ItemId = 12345, The ItemName (váha 25) a objeví se dvakrát v ItemLongDescription (váha 5 x2 = 10), slovo „košile“ by mělo celkovou váhu 35 pro ItemId = 12345.

Pokud někdo hledá „růžové tričko“, prohledám v tabulce všechny výskyty slov „Pink“ nebo „Shirt“ a Total theights. Zobrazování položek s nejvyšší celkovou hmotností nahoře.

SQL:

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

Takže tady to máte, základní (a rychlé) vyhledávač. Samozřejmě je třeba udělat ještě více, například odstranit interpunkci, HTML kód a bezcenná klíčová slova jako „a“, „pokud“, „nebo“. Toto nevyhledává klíčové fráze, ale můžete použít podobný systém pro fráze, pokud zjistíte, kde začínají a končí.

Komentáře

  • díky pěkné odpovědi. co byste také navrhli pro seskupování produktů. Myslím, že máte jako 1 milion procházených stránek produktů z různých webů. chcete seskupit stejné produkty na různé weby: programmers.stackexchange.com/questions/134292/…
  • @Monster – A co položka ' s kombinací výrobce a SKU?
  • Tato data si můžete také koupit (pronajmout) od společností jako Etilize
  • můžete to vysvětlit trochu víc, protože jsem to nepochopil. Děkuji.
  • Praktická odpověď " ok ". Toto však ignoruje celý studijní obor aka " Získávání informací ". Z hlediska " Ukazování správným směrem " IR by v mé mysli bylo lepší.

Odpověď

Volně distribuovaný koncept Úvod do získávání informací se chystá být vaším hlavním referenčním materiálem. Zpracovává vyhledávání (získávání informací) od základní po pokročilou úroveň.

Odpověď

Vyhledávače jsou postaveny na webové prohledávače , budete muset přijít na to, jak vytvořit jeden z těchto přísavek, než budete moci vytvořit web pro zobrazení jeho výsledků (budete potřebovat rychlou a efektivní databázi jděte do toho).

Komentáře

  • Vyhledávač může spotřebovat výstup webového prohledávače, ale jinak má s každým velmi málo společného jiný. Navíc je nepravděpodobné, že by rychlá a efektivní databáze odrůdy SQL v tomto úsilí hodně pomohla. Vyhledávače jsou obecně vytvářeny pomocí schémat převrácení indexování souborů, které ' vůbec nesedí do formy SQL.
  • @Marcelo Cantos: Inverzní indexování souborů zní komplikovaně: -0 – Děkujeme za pomoc při objasnění mé odpovědi!

Odpověď

Vytváření vyhledávače

Toto je úvodní kurz pro CS, který bude zahájen 20., doporučuji si ho prohlédnout, je nabízen zdarma .

Komentáře

  • Sebastian Thrun je také úzce spojen s Google.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *