Elasticsearch och system för fulltextsökning · Lektion

Markera sökresultat

Lägg till markeringar i sökresultaten för att visuellt framhäva matchande termer i de returnerade dokumenten och förbättra användarupplevelsen.

Lektion 3 av 411 steg

Markera sökresultat är en gratis lektion i Elasticsearch och system för fulltextsökning på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Elasticsearch och system för fulltextsökning, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Elasticsearch och system för fulltextsökning innehåller totalt 4 lektioner.

Varför markera resultat?

Föreställ dig att du söker efter ett recept och ser ”kyckling” markerat exakt där det förekommer bland ingredienserna och i stegen. Det är markering!

Den framhäver visuellt de matchande termerna i sökresultaten, vilket gör det mycket enklare för användare att snabbt skanna igenom och hitta relevant information.

  • Förbättrad användarupplevelse: Användare ser snabbt varför ett dokument är relevant.
  • Ledtrådar från sammanhanget: Visar textutdrag runt matchningen och ger sammanhang.
  • Snabbare informationsinhämtning: Minskar tiden som läggs på att läsa irrelevanta delar.

Din första markering

Det är enkelt att lägga till grundläggande markering i din Elasticsearch-sökning. Du behöver bara ta med ett highlight-block i din sökförfrågan.

Det här blocket anger vilka fält du vill markera. Som standard omsluter Elasticsearch de matchande termerna med taggarna <em> och </em>.

curl -X GET "localhost:9200/products/_search?pretty" \
  -H 'Content-Type: application/json' \
  -d'
{
  "query": {
    "match": {
      "description": "lightweight laptop"
    }
  },
  "highlight": {
    "fields": {
      "description": {}
    }
  }
}'

Markera specifika fält

I föregående exempel bad vi Elasticsearch att markera matchningar i fältet description.

Objektet highlight.fields är platsen där du listar alla fält som du vill tillämpa markering på. För varje fält kan du ange ett tomt objekt {} för standardbeteende eller ange anpassade alternativ.

Endast fält som är indexerade för fulltextsökning (till exempel text-fält) kan markeras effektivt.

Markera flera fält

Ofta vill du markera matchande termer i flera fält i samma dokument, till exempel en produkts title och content.

Lägg bara till fler fält i objektet fields i avsnittet highlight. Elasticsearch bearbetar varje fält separat.

curl -X GET "localhost:9200/articles/_search?pretty" \
  -H 'Content-Type: application/json' \
  -d'
{
  "query": {
    "match": {
      "text": "Elasticsearch indexing"
    }
  },
  "highlight": {
    "fields": {
      "title": {},
      "content": {}
    }
  }
}'

Anpassa markeringstaggar

Standardtaggarna <em> fungerar bra, men du kanske vill använda andra HTML-taggar eller CSS-klasser för att utforma dina markerade termer.

Du kan ändra dessa med parametrarna pre_tags och post_tags i ditt highlight-block. Parametrarna tar emot arrayer med strängar.

curl -X GET "localhost:9200/products/_search?pretty" \
  -H 'Content-Type: application/json' \
  -d'
{
  "query": {
    "match": {
      "name": "wireless headphones"
    }
  },
  "highlight": {
    "pre_tags": ["<span class=\"highlight\">"],
    "post_tags": ["</span>"],
    "fields": {
      "name": {}
    }
  }
}'

Styra utdragens längd (fragment_size)

När ett dokument är mycket långt vill du vanligtvis inte returnera hela fältet med markeringar. I stället vill du ha korta, relevanta utdrag.

Parametern fragment_size styr den maximala längden (i antal tecken) för de markerade utdragen. Elasticsearch försöker dela upp utdragen vid meningsgränser eller naturliga avbrott.

curl -X GET "localhost:9200/blogs/_search?pretty" \
  -H 'Content-Type: application/json' \
  -d'
{
  "query": {
    "match": {
      "body": "data analytics"
    }
  },
  "highlight": {
    "fragment_size": 100,
    "fields": {
      "body": {}
    }
  }
}'

Flera utdrag och inga matchningar

Du kan också styra hur många utdrag som returneras per fält med hjälp av number_of_fragments. Ange 0 för att returnera hela fältinnehållet som ett enda utdrag (om fragment_size också är 0).

Vad händer om det inte finns några matchningar i ett fält, men du ändå vill se dess innehåll? Använd no_match_size för att ange längden på utdraget som ska returneras om inga matchningar hittas. Som standard returneras inget utdrag för fältet om det inte finns någon matchning.

Avancerade utdragsgränser

För ännu mer exakt kontroll över hur utdrag skapas kan du använda boundary_scanner, boundary_chars och boundary_max_scan.

  • boundary_scanner: Anger hur utdrag delas upp (till exempel sentence, word, chars).
  • boundary_chars: Egna tecken som används som utdragsgränser när boundary_scanner är chars.
  • boundary_max_scan: Hur långt sökningen efter gränstecken ska sträcka sig.

De här alternativen är användbara för språk utan tydliga meningsstrukturer eller för särskilda innehållstyper.

Markering från matchande fält

Ibland matchar din sökfråga i ett fält (till exempel content), men du vill markera motsvarande termer i ett annat fält (till exempel ett kortare summary eller title) när resultatet visas.

Med parametern matched_fields kan du ange en lista över fält som ska användas för att skapa markeringar för det aktuella fältet. Det här är användbart när du vill visa kortfattade, markerade utdrag från ett relaterat och mer framträdande fält.

curl -X GET "localhost:9200/documents/_search?pretty" \
  -H 'Content-Type: application/json' \
  -d'
{
  "query": {
    "match": {
      "full_text": "distributed systems"
    }
  },
  "highlight": {
    "fields": {
      "abstract": {
        "matched_fields": ["full_text"],
        "fragment_size": 100
      }
    }
  }
}'

Frågesport om markeringsalternativ

Vilka av följande parametrar kan användas för att anpassa hur Elasticsearch skapar markeringar i sökresultat?

Sammanfattning: framhäv viktiga fynd

Du har lärt dig att ge dina sökresultat liv med markeringar! Den här kraftfulla funktionen är viktig för att förbättra användarupplevelsen genom att visuellt framhäva matchande termer.

  • Vi började med grundläggande markering med hjälp av highlight-blocket.
  • Du kan ange fields som ska markeras och anpassa pre_tags/post_tags.
  • fragment_size och number_of_fragments ger dig kontroll över utdragens längd och antal.
  • Avancerade alternativ som boundary_scanner och matched_fields ger detaljerad kontroll i komplexa scenarier.

Gå nu vidare och låt dina sökresultat glänsa!

Gratis att börja

Lär dig Elasticsearch och system för fulltextsökning med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Markera sökresultat” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Elasticsearch och system för fulltextsökning, inklusive ”Markera sökresultat”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Elasticsearch och system för fulltextsökning innehåller totalt 4 lektioner.

Vad lär jag mig i ”Markera sökresultat”?

Lägg till markeringar i sökresultaten för att visuellt framhäva matchande termer i de returnerade dokumenten och förbättra användarupplevelsen. Ni övar på Elasticsearch och system för fulltextsökning med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Elasticsearch och system för fulltextsökning?

Du behöver inga förkunskaper. Utbildningen i Elasticsearch och system för fulltextsökning på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Markera sökresultat”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Elasticsearch och system för fulltextsökning-lektionen?

Ja. Varje Elasticsearch och system för fulltextsökning-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Fras- och närhetssökningar
  2. Fuzzy- och wildcard-frågor
  3. Markera sökresultat
  4. Aggregationer för facetterad sökning
← Tillbaka till Elasticsearch och system för fulltextsökning