Blogi
Haku, joka ei lue tekstiä, kertoo lukijalle väärin
GENEROITU · 674 sanaa · EN→FI ✓

Kun lukija kirjoittaa sivuston hakukenttään lauseen ja saa vastaukseksi "Ei hakutuloksia", hän ei päättele haun olevan heikko. Hän päättelee, ettei sivustolla ole aiheesta mitään. Tyhjä tulossivu on siis väite koko arkistosta, ja hakukenttä, joka lukee vain otsikot ja tiivistelmät, esittää sen väärin juuri niistä kirjoituksista, joissa lukijan kysymykseen vastataan. Meidän hakumme teki niin tähän aamuun asti.
Tyhjä tulossivu luetaan tuomiona
Haku on sivuston ainoa paikka, jossa lukija kertoo tarpeensa omin sanoin ja pyytää suoraa vastausta. Jos vastaus on tyhjä, osa kokeilee toista sanamuotoa. Moni lähtee saman tien, yleensä Googleen, ja osa heistä löytää aiheen jonkun toisen sivuilta.
Siksi rajoittunut hakukenttä voi olla huonompi kuin ei hakukenttää lainkaan. Sivusto ilman hakua ohjaa lukijan selaamaan arkistoa tai hakukoneeseen, josta kirjoituksesi olisi löytynyt. Kapea haku päättää etsinnän itsevarmaan väärään vastaukseen, sinun fontillasi ja sinun nimissäsi. Lukija ei voi tietää, että työkalu katsoi vain murto-osaa sivusta. Hän näkee tyhjän ruudun ja uskoo sitä.
Meidän hakumme luki seitsemän viikkoa vain otsikoita
Affinero avattiin 27. elokuuta sillä haulla, joka tuli valmiin sivupohjan mukana. Se vertasi hakusanaa neljään kenttään: otsikkoon, osoitteen loppuosaan, hakuotsikkoon ja metakuvaukseen. Itse tekstiä se ei lukenut koskaan. Lukija, joka muisti kirjoituksestamme yhden lauseen ja haki sillä, sai kuulla, ettei meillä ole mitään.
Suhdeluku oli surkea. Kirjoituksemme ovat satojen sanojen mittaisia, ja oma tarkistuksemme rajaa metakuvauksen 160 merkkiin. Haku luki jokaisesta kirjoituksesta lauseen tai kaksi ja vastasi koko tekstin puolesta. Suomenkielinen puoli oli vielä huonommassa jamassa, koska hakuhakemistossa oli kustakin kirjoituksesta vain yksi hakuotsikko ja kuvaus molemmille kielille. Viimeksi synkronoitu kieli voitti, joten suomalainen lukija saattoi saada tuloskortin englanniksi.
Korjaus meni tuotantoon 16. lokakuuta. Hakuhakemisto tallentaa nyt jokaisen kirjoituksen leipätekstin pelkkänä tekstinä erikseen kummallekin kielelle, ja haku vertaa myös siihen. Kun suomenkieliseen hakuun kirjoittaa moitteettomasti muotoiltu, se löytää eilisen kirjoituksen sivupohjan oletusarvoista, vaikka ilmaus esiintyy vain sen leipätekstissä.
Leipätekstin lukeminen on välttämätöntä mutta ei riitä
Testasimme korjatun haun ennen tämän kirjoittamista, ja se pettää yhä kolmella tavalla. Payloadin hakuehto edellyttää, että "kaikki sanat löytyvät, missä järjestyksessä tahansa". Lainausmerkkeihin kirjoitettu lause etsii siis myös lainausmerkkejä eikä löydä mitään. Englanninkielinen haku sitemaps ohittaa kirjoituksen, jossa sana sitemap toistuu yksikössä läpi tekstin. Ja suomeksi haku oletusarvoja ohittaa kirjoituksen, jonka koko aiheena ovat oletusarvot.
Suomessa ongelma on erityisen paha. Haku vertaa merkkijonoja, joten perusmuoto löytyy usein, jos teksti vain lisää siihen päätteen: varavaihtoehto löytää tekstin, jossa lukee varavaihtoehtoon. Toisinpäin se ei toimi. Kun lukija kirjoittaa varavaihtoehdot, astevaihtelu on jo muuttanut sanan vartaloa, eikä sellaista merkkijonoa ole tekstissä. Viidellätoista sijamuodolla ja astevaihtelulla suurin osa luontevista hakusanoista on jotain muuta kuin tekstin oma muoto.
PostgreSQL:n oma tekstihaun dokumentaatio sanoo saman suoraan: LIKE-tyyppisiltä operaattoreilta puuttuu kielellinen tuki jopa englannille, eivätkä ne tunnista saman sanan johdettuja muotoja. Ratkaisu on olemassa, sillä Postgres sisältää Snowball-vartalontunnistimen sekä englannille että suomelle. Emme ole vielä ottaneet sitä käyttöön, emmekä väitä sen olevan virheetön. Vartalontunnistin niputtaa joskus eri sanoja yhteen ja ohittaa epäsäännöllisiä muotoja. Se kuitenkin erehtyy kuin huonomuistinen kirjastonhoitaja eikä kuin lukittu ovi.
Kone kasvattaa aukkoa joka aamu
Ihmisvoimin pyöritetyssä blogissa kapea haku on kertaluonteinen menetys. Automaattisessa blogissa se kasvaa korkoa korolle. Kone julkaisee joka päivä, jokainen kirjoitus tuo satoja sanoja leipätekstiä ja yhden lyhyen tiivistelmän, ja tiivistelmä kirjoitetaan voittamaan klikkaus hakutuloksissa, ei luettelemaan kirjoituksen sisältöä. Joka aamu se osuus arkistosta, jonka haku näki, pieneni.
Tämä on toinen puoli siitä, mitä kirjoitimme oman sivustohaun lokin lukemisesta. Siinä puhuttiin siitä, mitä epäonnistunut haku kertoo sinulle. Tämä kirjoitus koskee sitä, mitä se kertoo lukijalle. Seitsemän viikon ajan meidän epäonnistuneet hakumme johtuivat enimmäkseen hausta eivätkä arkistosta.
Hae kaikesta tai kerro, mistä haettiin
Sääntö, jota nyt noudatamme, on yksinkertainen. Hakukentän on joko luettava kaikki, mistä se väittää hakevansa, jokaisella sivuston kielellä, tai kerrottava suoraan, mitä se luki. "Yhdenkään kirjoituksen otsikossa ei ole tätä sanaa" on rehellinen lause. "Ei hakutuloksia" on väite koko arkistosta, ja haun on ansaittava oikeus sanoa se.
Ennen julkaisua ei siis testata sitä, palauttaako haku tuloksia. Kopioi lause syvältä oikean kirjoituksen keskeltä, kirjoita se jokaisella kielellä eri taivutusmuodossa kuin tekstissä, ja katso, mitä tulee takaisin. Jos ruutu on tyhjä, hakukenttä kertoo lukijoillesi jotain, mikä ei pidä paikkaansa, eikä heillä ole mitään syytä epäillä sitä.