Elasticsearch og systemer til fuldtekstsøgning · Lektion

Søgning efter fraser og nærhed

Opdag, hvordan De søger efter eksakte fraser og ord inden for en bestemt nærhed ved hjælp af parametrene `match_phrase` og `slop`.

Lektion 1 af 411 trin

Søgning efter fraser og nærhed er en gratis Elasticsearch og systemer til fuldtekstsøgning-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Elasticsearch og systemer til fuldtekstsøgning, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Elasticsearch og systemer til fuldtekstsøgning-kurset indeholder 4 lektioner i alt.

Ud over enkelte ord

Velkommen! Indtil videre har du lært at søge efter enkelte ord. Men hvad nu, hvis du skal finde nøjagtige sætninger som "quick brown fox" eller ord, der står tæt på hinanden?

I denne lektion introduceres sætnings- og nærhedssøgninger, som er effektive teknikker til at gøre dine søgninger mere præcise og relevante.

Find nøjagtige sætninger

Nogle gange er ordrenes rækkefølge vigtig. For eksempel er "New York" forskellig fra "York New". Hvis du vil finde en nøjagtig rækkefølge af ord, bruger du en sætningsforespørgsel.

I Elasticsearch er match_phrase-forespørgslen perfekt til dette. Den leder efter alle termer i din forespørgselsstreng i nøjagtig samme rækkefølge og lige ved siden af hinanden.

Eksempel på match_phrase

Lad os se match_phrase i praksis. Vi simulerer indeksering af nogle få dokumenter og søger derefter efter den nøjagtige sætning "quick brown fox".

public class Main {
  public static void main(String[] args) {
    System.out.println("Simulating search for exact phrase 'quick brown fox'");
    System.out.println("on documents:");
    System.out.println("- 'The quick brown fox jumps.'");
    System.out.println("- 'A fox brown quick jumps.'");
    System.out.println("- 'Quick brown fox is fast.'");

    System.out.println("
--- Elasticsearch Query (simulated) ---");
    System.out.println("{");
    System.out.println("  \"query\": {");
    System.out.println("    \"match_phrase\": {");
    System.out.println("      \"text_field\": \"quick brown fox\"");
    System.out.println("    }");
    System.out.println("  }");
    System.out.println("}");

    System.out.println("
--- Search Results (simulated) ---");
    System.out.println("Document: 'The quick brown fox jumps.' (MATCH!)");
    System.out.println("Document: 'Quick brown fox is fast.' (MATCH!)");
    System.out.println("No match for 'A fox brown quick jumps.'");
  }
}

Logikken bag sætningsmatch

match_phrase-forespørgslen kræver tre betingelser:

  • Alle termer er til stede: Alle ord i din sætning ("quick", "brown", "fox") skal findes i dokumentet.
  • Nøjagtig rækkefølge: Ordene skal stå i samme rækkefølge.
  • Sammenhængende: Som standard skal ordene stå lige ved siden af hinanden.

Hvis en af disse betingelser ikke er opfyldt, betragtes dokumentet ikke som et match.

Nærhedssøgning med slop

Hvad nu, hvis du vil finde ord, der står *tæt* på hinanden, men ikke nødvendigvis udgør en nøjagtig, sammenhængende sætning? Det er her, nærhedssøgning kommer ind i billedet.

Elasticsearch introducerer parameteren slop til match_phrase-forespørgsler. Den tillader et bestemt antal "slops" eller "mellemrum" mellem ordene i din sætning.

Forstå slop

Parameteren slop angiver det maksimale antal positioner, som tokens må "flyttes" for at matche sætningen.

  • slop: 0 (standard) betyder, at ordene skal stå sammenhængende.
  • slop: 1 tillader, at ét ord springes over, eller at rækkefølgen ændres en smule.
  • Højere værdier for slop tillader større fleksibilitet i ordenes rækkefølge og afstand.

Tænk på det som det antal "flytninger", der skal til for at omdanne dokumentets ord til din målsætning.

Demonstration af slop=1

Lad os ændre vores tidligere søgning. Vi søger efter "quick fox", men tillader ét ord imellem dem ved hjælp af "slop": 1.

public class Main {
  public static void main(String[] args) {
    System.out.println("Simulating search for 'quick fox' with slop: 1");
    System.out.println("on documents:");
    System.out.println("- 'The quick brown fox jumps.'");
    System.out.println("- 'A quick sly fox is here.'");
    System.out.println("- 'The quick fox is fast.'");

    System.out.println("
--- Elasticsearch Query (simulated) ---");
    System.out.println("{");
    System.out.println("  \"query\": {");
    System.out.println("    \"match_phrase\": {");
    System.out.println("      \"text_field\": {");
    System.out.println("        \"query\": \"quick fox\",");
    System.out.println("        \"slop\": 1");
    System.out.println("      }");
    System.out.println("    }");
    System.out.println("  }");
    System.out.println("}");

    System.out.println("
--- Search Results (simulated) ---");
    System.out.println("Document: 'The quick brown fox jumps.' (MATCH!)");
    System.out.println("Document: 'A quick sly fox is here.' (MATCH!)");
    System.out.println("Document: 'The quick fox is fast.' (MATCH!)");
  }
}

slop og ordenes rækkefølge

slop kan også hjælpe med at matche sætninger, hvor ordene står i en lidt anden rækkefølge. Du kan for eksempel matche "brown quick", når du søger efter "quick brown" med slop: 1.

Den måler det mindste antal flytninger, der skal til for at få dokumentets tokens til at stå i forespørgslens tokenrækkefølge. Hver flytning tæller som 1 slop-enhed.

public class Main {
  public static void main(String[] args) {
    System.out.println("Simulating search for 'quick brown' with slop: 1");
    System.out.println("on document:");
    System.out.println("- 'The brown quick fox.'"); // 'brown' and 'quick' are swapped

    System.out.println("
--- Elasticsearch Query (simulated) ---");
    System.out.println("{");
    System.out.println("  \"query\": {");
    System.out.println("    \"match_phrase\": {");
    System.out.println("      \"text_field\": {");
    System.out.println("        \"query\": \"quick brown\",");
    System.out.println("        \"slop\": 1");
    System.out.println("      }");
    System.out.println("    }");
    System.out.println("  }");
    System.out.println("}");

    System.out.println("
--- Search Results (simulated) ---");
    System.out.println("Document: 'The brown quick fox.' (MATCH!)");
    System.out.println("Explanation: To change 'brown quick' to 'quick brown', one move is needed (slop 1).");
  }
}

match_phrase kontra match

Det er vigtigt at skelne match_phrase fra den grundlæggende match-forespørgsel, du har set tidligere.

  • match-forespørgsel: Finder dokumenter, der indeholder *et eller flere* af ordene, uanset rækkefølge eller afstand. Den er god til generel relevans.
  • match_phrase-forespørgsel: Kræver *alle* ord i nøjagtig rækkefølge og som standard sammenhængende. Med slop tillader den kontrolleret nærhed. Den bruges til høj præcision.

Vælg match_phrase, når ordenes rækkefølge og nærhed er afgørende for din søgning.

Tjek af nærhedssøgning

Du vil finde dokumenter, hvor "apple" og "pie" optræder med højst ét ord imellem sig og i netop den rækkefølge.

Opsummering: Præcise søgninger

Godt gået! Du har lært at forbedre præcisionen af dine søgninger:

  • match_phrase: Bruges til at finde nøjagtige rækkefølger af ord.
  • slop-parameter: Styrer den tilladte afstand og ændring af rækkefølgen mellem ord i en sætning.

Disse teknikker er afgørende, hvis du vil bygge meget præcise og brugervenlige søgeoplevelser. Bliv ved med at øve dig, så du mestrer dem!

Gratis at komme i gang

Lær Elasticsearch og systemer til fuldtekstsøgning med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Søgning efter fraser og nærhed” gratis?

Ja — alle 3 lektioner i læringssporet Elasticsearch og systemer til fuldtekstsøgning, inklusive “Søgning efter fraser og nærhed”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Elasticsearch og systemer til fuldtekstsøgning-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Søgning efter fraser og nærhed”?

Opdag, hvordan De søger efter eksakte fraser og ord inden for en bestemt nærhed ved hjælp af parametrene `match_phrase` og `slop`. Du øver dig i Elasticsearch og systemer til fuldtekstsøgning med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Elasticsearch og systemer til fuldtekstsøgning?

Der kræves ingen tidligere erfaring. Elasticsearch og systemer til fuldtekstsøgning på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Søgning efter fraser og nærhed”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Elasticsearch og systemer til fuldtekstsøgning-lektion?

Ja. Alle Elasticsearch og systemer til fuldtekstsøgning-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Søgning efter fraser og nærhed
  2. Fuzzy- og wildcard-forespørgsler
  3. Fremhævning af søgeresultater
  4. Aggregeringer til facetteret søgning
← Tilbage til Elasticsearch og systemer til fuldtekstsøgning