Artikel Beställa

Användaren hittar inte sin post: beställ sök och filter som klarar stavfel, å ä ö och tomma träfflistor

Listan växte förbi en skärm och någon bad om en sökruta. Den kom på en minut och ser rätt ut. Sedan skriver någon asa i stället för Åsa, får en tom vit yta och drar slutsatsen att posten är borta. Den finns kvar. Det som saknas är reglerna ingen beställde, för sökrutan byggdes sist och fick aldrig veta vad den skulle hitta.

Publicerad · Senast granskad

Svart trämodell där en lång bänk bär en tät rad upprättstående brickor med olika ådring, en av dem mörkt blågrön; tre brickor står avskilda intill en öppen rektangulär ram, och längst till höger står en slät bricka ensam på en låg platta medan en röd stav ligger snett över bänken.
De tre brickorna som lyfts ur raden är träfflistan. Den släta brickan på egen platta längst till höger är vyn du får när ingenting matchar.

Kort sagt

En sökruta som inte fått regler bestämmer dem själv, och valet syns först när någon inte hittar sin post. Fem saker beställer du i klartext: vilka fält sökningen gäller, att stora och små bokstäver ger samma träffar, att å ä ö hittas även när användaren skriver a och o, att en del av ett ord räcker, och vad den tomma träfflistan ska säga. Prova sedan med sex påhittade poster och tio sökningar vars facit du räknat fram innan du rör appen.

Sökrutan byggs sist, och då finns inga regler kvar att följa

När du beskrev appen beskrev du formuläret, listan och kanske utskicket. Sökrutan kom som en eftertanke: ”lägg till en sökruta ovanför listan”. Det är en beställning av en ruta, inte av en sökning. Vad rutan sedan gör med det användaren skriver är fyra eller fem beslut som fattades utan dig.

Fyra utfall är värda att känna igen, för de ser olika ut för användaren men har samma orsak. Det första är att sökningen kräver hela ord. Användaren skriver lundstr och får ingenting, trots att posten heter Lundström. Det andra är att stora och små bokstäver hålls isär, så att svensson inte hittar en post som någon skrev med versaler. Det tredje är att å, ä och ö behandlas som andra bokstäver än a och o, så att asa inte hittar Åsa — och det är precis så en användare med ett annat tangentbord, eller bråttom, faktiskt skriver.

Det fjärde är det som gör de tre andra farliga: en sökning utan träffar visar en tom yta utan text. Användaren ser ingen post, ingen förklaring och ingen väg tillbaka. Slutsatsen blir inte ”jag stavade konstigt” utan ”posten är borta”, och nästa steg är att lägga in den igen. Nu finns den två gånger, och den ena av dem är den som ändras.

Samma mönster som i artikeln om att importera ett befintligt kalkylark gäller här, fast åt andra hållet. Där handlade det om att få in posterna med besked om vilka som inte kom med. Här handlar det om att hitta dem efteråt, och beskedet är lika viktigt.


Fem beslut du fattar åt sökrutan

Varje beslut nedan har en motsvarande rad i beställningstexten längre ned och minst en sökning i facit. Tar du bort ett beslut ur beställningen tappar du också provet som skulle ha avslöjat det.

Fälten: vad sökningen tittar i. Namn räcker sällan. Ort och e-post är ofta det användaren minns när namnet stavas på tre sätt. Men ett fritextfält som Anteckning gör sökningen otydlig: söker du på ett namn får du poster där namnet bara nämns i en anteckning om någon annan. Bestäm vilka fält som ingår, skriv dem i beställningen och skriv dem sedan intill sökrutan så att användaren ser det.
Versaler och gemener: samma träffar åt båda håll. Ett register som fyllts i av flera personer har poster skrivna med versaler, med liten begynnelsebokstav och med bådadera. Sökningen ska ge samma resultat oavsett hur sökordet och posten skrivs. Det gäller inte bara första bokstaven — en post skriven MARIA SVENSSON ska hittas av svensson.
Å, ä och ö: hittas även när användaren skriver a och o. Det här är det beslut som oftast saknas i en svensk app, och det ska gälla åt båda håll: en sökning på asa ska hitta Åsa, och en sökning på Öberg ska hitta en post någon skrev Oberg. Hur tecknen i övrigt sparas, visas, sorteras och exporteras hör inte hit — det äger artikeln om svenska i appen, och den är värd att läsa först om tecknen redan ser konstiga ut i listan. Är namnet trasigt i lagringen hjälper ingen sökregel.
Del av ord: också när delen börjar inne i ordet. Att lundstr hittar Lundström är det lätta fallet. Det svåra är ström, som börjar mitt i namnet. Skillnaden är värd att beställa uttryckligen, för den är hela poängen när efternamnet är sammansatt eller när användaren minns slutet men inte början. Priset är fler träffar på korta sökord, och det är ett rimligt pris så länge antalet träffar syns.
Den tomma träfflistan: en vy, inte ett hål. Noll träffar är ett svar och ska se ut som ett svar: vad som söktes, att inget matchade, vilka fält som genomsöktes, ett förslag att prova en kortare del av ordet och en knapp som rensar sökningen. Det är ett annat läge än listan innan något lagts in, som artikeln om appens tomma lägen äger. Här finns posterna — de matchade bara inte.

Ett sjätte beslut hör ihop med filtret, om appen har ett: ska filtret och sökningen kombineras eller ersätta varandra? Kombineras de kan noll träffar bero på filtret snarare än på sökordet, och då är det filtret vyn ska peka på.


Beställningen: en sökning som säger vad den tittade i

Beställningen nedan är skriven för ett medlemsregister med fyra fält. Byt ut namnen i hakparenteserna mot dina egna, men behåll ordningen: först fälten, sedan reglerna för hur sökordet jämförs, sedan träfflistan, sist den tomma vyn och filtret. Den sista meningen är den som gör resten möjlig att kontrollera.

Beställning: sökruta och filter över listan
Appen ska ha en sökruta ovanför listan med [medlemmar].

Sökningen ska gälla fälten [Namn], [E-post] och [Ort]. Fältet
[Anteckning] ska inte genomsökas. Skriv intill sökrutan, i
klartext, vilka fält sökningen gäller.

Så ska sökordet jämföras med posterna:
- Stora och små bokstäver ska ge samma träffar, i hela ordet.
  En sökning på svensson ska hitta en post skriven SVENSSON.
- Å ska hittas när användaren skriver a, ä när användaren
  skriver a och ö när användaren skriver o. Det ska gälla åt
  båda håll, så att en sökning på Öberg också hittar en post
  som någon skrivit Oberg.
- En del av ett ord ska räcka, även när delen börjar inne i
  ordet: både lundstr och ström ska hitta Lundström.
- Mellanslag före och efter det användaren skriver ska strykas,
  och flera mellanslag mitt i ska räknas som ett.
- Sökningen ska inte ändra, spara eller ta bort något i
  registret.

Träfflistan:
- Visa antalet träffar ovanför listan, till exempel 3 av 128.
- Ett kryss i sökrutan rensar sökningen, och listan visar då
  alla poster igen.

Ger sökningen noll träffar ska det vara en egen vy, inte en tom
yta. Vyn ska innehålla: det som söktes, skrivet ordagrant som
användaren skrev det; en mening om att ingen post matchade;
vilka fält som genomsöktes; ett förslag att prova en kortare
del av ordet; och knappen som rensar sökningen.

Filtret [Ort] ska kunna kombineras med sökningen, så att listan
visar det som stämmer med både filtret och sökordet. Visa vilka
filter som är påslagna och låt en knapp stänga av alla på en
gång. Blir träfflistan tom med ett filter påslaget ska vyn säga
att det beror på både sökordet och filtret, och låta mig stänga
av filtret utan att skriva om sökordet.

Ändra ingenting i hur posterna sparas eller visas i övrigt.
Beskriv först, i klartext och utan kodord, vad sökningen kommer
att göra med var och en av de tio sökningarna nedan.

Två rader kan du vilja ändra. Ska anteckningsfältet ingå, flytta det till listan över sökfält och räkna om facit för sökning 1 och 9 nedan — de två sökningarna finns just för att visa vad som händer med fältet. Och kravet att å ska hittas när användaren skriver a betyder inte att å och a är samma bokstav i övrigt. Sorteringen är en annan sak, och den hör hemma i artikeln om svenska i appen.


Testregistret: sex poster du hittar på själv

Prova inte på det riktiga registret först. Sex påhittade poster räcker, och de är påhittade med flit: namnen nedan är testdata, inte personer. Poängen är att varje post bär en egenhet — ett svenskt tecken, versaler, ett sammansatt efternamn eller ett ord som ligger i fel fält — så att en sökning som misslyckas pekar ut vilken regel som saknas.

Skriv in facit på ett papper innan du provar. Det är den ordning som fungerar, för ett facit du läser av efteråt blir lätt en förklaring till det du redan ser.

Testregistret och de tio sökningarna med facit
Testregistret, sex poster i fälten Namn, E-post, Ort och
Anteckning. Sökningen gäller Namn, E-post och Ort.

1. Åsa Öberg · asa.oberg@exempel.se · Malmö · Anteckning: tom
2. Erik Lundström · erik@exempel.se · Göteborg · tom
3. MARIA SVENSSON · maria@exempel.se · Umeå · tom
4. Björn Ek · bjorn@exempel.se · Växjö · Anteckning: Åsa är
   kontaktperson
5. Anna Lind · anna@exempel.se · Stockholm · tom
6. Jan Ohlsson · jan@exempel.se · Örebro · tom

Sökning 1:  Åsa
  Facit: 1 träff, post 1. Post 4 ska inte komma med, trots
  ordet Åsa i anteckningen, eftersom det fältet inte söks i.

Sökning 2:  asa
  Facit: 1 träff, post 1. Å skrivet som a.

Sökning 3:  ÅSA
  Facit: 1 träff, post 1. Versaler mot en post med gemener.

Sökning 4:  oberg
  Facit: 1 träff, post 1. Ö skrivet som o.

Sökning 5:  lundstr
  Facit: 1 träff, post 2. Del av ord, från ordets början.

Sökning 6:  ström
  Facit: 1 träff, post 2. Del av ord som börjar inne i ordet.

Sökning 7:  svensson
  Facit: 1 träff, post 3. Gemener mot en post med versaler.

Sökning 8:  ␣␣Anna␣␣  (två mellanslag före och efter)
  Facit: 1 träff, post 5. Samma svar som utan mellanslagen.

Sökning 9:  kontaktperson
  Facit: 0 träffar och den tomma vyn. Ordet finns i post 4:s
  anteckning, som inte söks i.

Sökning 10: Kiruna
  Facit: 0 träffar och den tomma vyn. Ordet finns ingenstans i
  registret.

Läs av i den ordningen och stanna vid första avvikelsen. Ger sökning 2 noll träffar men sökning 1 en träff är det teckenregeln som saknas, och det är den du beställer om — inte ”sökningen fungerar inte”. Ger sökning 5 en träff men sökning 6 noll är det delen som börjar inne i ordet som inte kom med. Ger sökning 1 två träffar söker appen i anteckningsfältet trots beställningen. Varje sökning bär ett fel, och det är därför de går att använda som felsökning och inte bara som godkänt eller underkänt.

Antalet träffar är en del av facit

En sökning som ger rätt post plus fyra andra är inte godkänd. Det är så en sökning ser ut när den letar efter varje bokstav för sig i stället för hela sökordet, och det märks inte på sex poster — där ser fem träffar bara ut som en generös sökning. På tvåhundra poster blir samma fel en lista som aldrig blir kortare hur mycket användaren än skriver. Skriv därför ned antalet, inte bara vilken post du väntade dig.


Den tomma träfflistan är en egen vy

Sökning 9 och 10 ger båda noll träffar, men av olika skäl, och det är därför de är två prov och inte ett. Sökning 10 är den enkla: ordet finns inte i registret, och vyn ska säga det. Sökning 9 är den som avslöjar om appen berättar var den letade. Ordet finns i registret — det står i post 4:s anteckning — men inte i något fält sökningen gäller. Utan raden om vilka fält som genomsöktes är den tomma vyn obegriplig just där, eftersom användaren vet att ordet finns.

Den tomma träfflistan liknar den tomma listan innan data finns, men är inte samma sak. Den tomma listan möter en ny användare och ska leda vidare till att lägga in något — artikeln om appens tomma lägen går igenom fyra sådana lägen. Den tomma träfflistan möter någon som redan har hundra poster och nyss skrev fel. Att erbjuda den personen en stor knapp som säger ”Lägg till din första post” är den exakta orsaken till dubbletten i början av den här artikeln.

Prova därför båda i samma omgång: öppna listan med sökrutan tom och läs vad som står, och sök sedan på något som inte finns. Står det samma text i båda lägena är det ett fel att beställa bort.


Filtret räknas med i samma prov

Ett filter, till exempel på ort, gör två saker med sökningen. Det begränsar vad som kan träffa, och det överlever ofta att sökordet ändras. Kombinationen är den vanliga orsaken till att en användare säger att posten försvann: filtret Malmö ligger kvar sedan i förrgår, sökordet stämmer, och träfflistan är tom.

Lägg därför till två sökningar när appen har filter. Slå på filtret Malmö och kör sökning 1 igen — facit är fortfarande en träff. Slå sedan på filtret Umeå och kör sökning 1 — facit är noll träffar, och den tomma vyn ska nu säga att både sökordet och filtret begränsar, och erbjuda att stänga av filtret utan att sökordet skrivs om. Klarar appen det är filtret beställt rätt. Klarar den det inte syns felet inte i de tio sökningarna, eftersom de körs med filtren avstängda.

Spara de tio sökningarna och deras facit som en rad i din provlista och kör om dem efter varje ändring som rör listan. Sökningen är en funktion som slutar fungera av ändringar ingen kopplar till den: ett nytt fält i formuläret, en ny sortering eller en ombyggd lista kan byta ut sökrutan mot en ny som aldrig fick reglerna.


Var beställningen slutar

Beställningen säger ingenting om hur sökningen byggs, och det är avsiktligt. Svarar verktyget med ord som ”index” (en färdig förteckning som hålls vid sidan av listan så att appen slipper läsa igenom varje post) eller ”fuzzy” (att en sökning får ge träff trots att några bokstäver skiljer) behöver du inte ta ställning till dem. Du behöver kontrollera att de tio sökningarna ger det facit du skrev ned. Får du ett förslag som låter komplicerat är frågan tillbaka enkel: vilken av de tio sökningarna blir bättre av det?

Tre saker täcker den här sidan inte. Den första är sortering, alltså i vilken ordning träffarna visas — det är ett eget beslut och för svenska bokstäver hör det till artikeln om svenska i appen. Den andra är verkliga stavfel i flera bokstäver, som Lunström utan d. Det är ett rimligt önskemål, men en sökning som förlåter fel ger också träffar den inte borde ge, och det valet bör göras efter att de tio sökningarna går igenom, inte i stället för dem. Den tredje är stora register: är listan så lång att den visas sida för sida måste träffarna räknas över alla sidor, annars söker appen bara i den sida som råkar visas.

Rätta ett beslut i taget och kör om alla tio sökningarna efter varje ändring, på det sätt guiden om beställningar beskriver. En samlad begäran om att ”göra sökningen smartare” är en beställning utan slutpunkt, och den brukar komma tillbaka som en ny sökruta där två av de tio sökningarna blivit sämre utan att någon märkte det. Beställningen och de tio sökningarna kontrollerades 22 september 2026.


Klart när de tio sökningarna ger facit

Arbetet är klart när alla tio sökningarna ger det antal träffar och de poster du skrev på pappret, när den tomma vyn säger vad som söktes och vilka fält som genomsöktes, när filtret går att stänga av utan att sökordet skrivs om, och när samma tio sökningar körs om efter nästa ändring i listan. Du behöver inte veta hur sökningen byggdes. Du behöver kunna visa att asa hittar posten.

Tre frågor att spara

Vilka fält söks det i, och står det intill sökrutan? Vad ser användaren när noll poster matchar? Och när körde jag senast de tio sökningarna med facit?