Sådan laver du en søgemaskine i PHP og MySQL

Hvorfor vil du alligevel lave en søgemaskine? Der er allerede en søgemaskine til at styre dem alle. Du kan bruge Google til at finde næsten alt på internettet, og jeg tvivler på, at du nogensinde vil have de samme computer- og lagringskapaciteter som den store G.

Så hvorfor så lave din egen søgemaskine? - For at tjene penge selvfølgelig!

…og at blive berømt som skaberen af ​​den næste store søgemaskine, eller fordi du som programmør eller ingeniør kan lide udfordringer. Det er vanskeligt at lave en søgemaskine til det offentlige internet, og hvis du er ligesom mig, kan du lide at løse vanskelige problemer.

Den tredje applikation er en skræddersyet, højhastigheds-webstedsøgning til dit store tusindvis af siders websted. En indekseret søgemaskine vil være meget hurtigere end en fuldtekst søgefunktion, og hvis Googles webstedssøgning ikke er fleksibel nok til dit websted, kan du lave din egen søgefunktion.

GRUNDLÆGGENDE SØGNING

Grundlaget for enhver STOR søgemaskine er et ord-til-websideindeks, dybest set en lang liste af ord og hvor godt de relaterer til forskellige websider.

For at lave en søgemaskine skal du gøre fire ting:

* Beslut hvilke sider der skal hentes og hent dem
* Udforsk ord, sætninger og links fra sidengoogle-tilpasset-se
* Giv en score til hvert søgeord eller nøglesætning, der angiver, hvor godt sætningen relaterer sig til de pågældende sider, og gem scoren i søgemaskinens indeks
* Giv brugerne mulighed for at forespørge i indekset og få en liste over matchende websider

Dette er ikke svært for en erfaren programmør. Det kan klares på en dag, hvis du kender regulære udtryk og har lidt erfaring med HTML og databaser.

Nu har du en fungerende søgemaskine, bare tilføje en masse computere og harddiske, og du vil snart indeksere hele internettet. Hvis du ikke er parat til at gå så langt, vil en disk på én terabyte indeholde et indeks på omkring 50 millioner sider.

SÅDAN SCORERER DU SIDER

Efter at have gennemført den grundlæggende søgefunktionalitet er der meget arbejde, før nogen vil bruge din nye maskine. Et indeks er ikke nok. Det, der er udfordrende, er, hvordan man scorer sider for at give slutbrugeren de søgeresultater, der er mest relevante for hans idé om, hvad hi søger efter.

Du skal beslutte, hvor meget vægt der skal lægges på søgeord i flisetagget, beskrivelsen og hovedwebsidens indhold. For at opnå en god scoring vil du også gerne booste søgeord, der findes i sidens URL, og kontrollere ankerteksten på indgående links. At holde styr på indgående links er det mest nyttige og mest udfordrende af ovenstående, du skal have en separat databasetabel med information om alle links mellem sider, du indekserer.

HVAD SKAL INDEKSERES OG IKKE INDEKSERES

Andre forhindringer, du vil finde, når du begynder at indeksere rigtigt internetindhold, er det faktum, at der flyder spildmængder af ubrugeligt skrammel rundt overalt, og til sidst vil dit indeks blive fyldt med spam, affilierede sider, parkerede domæner, igangværende hjemmesider uden indhold, link gårde, der bruges af søgemaskineoptimering, spejler websteder, der bruger datafeeds til at oprette tusindvis af sider med produktfortegnelser eller andet reproduceret indhold osv. osv...

Når du indekserer fra internettet, bliver du nødt til at finde måder at filtrere uønsket indhold fra, hvad folk rent faktisk læser og søger efter. Til at starte med kan du begrænse, hvor dybt ind i undermapper du crawler, hvor mange linkhop fra en domæneindeksside du gennemgår, og hvor mange links pr. webside der skal tillades.

PARSERING AF HJEMMESIDE

Der er en million måder, både rigtige og forkerte til at skrive HTML, og når du indekserer fra internettet, skal du håndtere dem alle.

Når du analyserer søgeord fra sider, skal du ikke kun håndtere den komplette HTML-standard, men også alle de ikke-standardiserede måder, som uofficielt understøttes af internetbrowsere.

For at kunne læse alle sider skal du også analysere javascript på klientsiden, håndtere frames, CSS og iframes.
Dette er en stor del af arbejdet med en generel søgemaskine, for at kunne læse alt muligt indhold.

HVORFOR SÅ MANGE URLS?

Endelig bliver du nødt til at forholde dig til det faktum, at mange websteder har mange URL'er, der peger på den samme webside. Bare se på dette eksempel:

dmoz.org
www.dmoz.org
dmoz.org/index.html
www.dmoz.org/index.html

Alle disse URL'er peger på den samme webside. Hvis du ikke laver en speciel kode til at håndtere det, vil du snart have 4 resultater i din søgemaskine (et for hver URL), der alle går til den samme side. Brugere vil ikke kunne lide dig.
Der er også mulighed for forespørgselsstrenge, hvor et sessions-id efter spørgsmålstegnet i URL'en vil skabe næsten uendelige URL'er til den samme webside.

google.com?SID=4434324325325
google.com?SID=4387483748377
google.com?SID=7654565644466

Til søgemaskinen vil der være et rigtig stort antal sider, der alle indeholder det samme indhold. Den hurtige løsning er naturligvis ikke at indeksere sider, der indeholder en forespørgselsstreng. Eller for at fjerne forespørgselsstrengen fra sider. Dette virker, men vil også fjerne en masse legitimt indhold (tænk fora) fra dit indeks.

Du har nu alle de oplysninger, du behøver for at lave en webstedssøgemaskine. Hvis du går efter en generel internetsøgemaskine, er der mange flere detaljer, du skal medtage. Som robots.txt, sitemaps, omdirigeringer, fuldmagter, genkendelse af indholdstyper, avancerede rangordningsalgoritmer samt håndtering af terabyte af data. Jeg vil dække flere detaljer i en fremtidig artikel. Held og lykke med dit næste søgemaskineprojekt!

Kategorierblog
  1. Pingback:Tweets, der nævner TopTut.com – Topvejledninger » Sådan laver du en søgemaskine i PHP og MySQL -- Topsy.com

  2. Pingback:TopTut.com – Top tutorials » Sådan laver du en søgemaskine i PHP … | Søgemaskine promovering online

Kommentarer er lukket.