Elasticsearch & Full Text Search Systems · Ders

Öbek ve Yakınlık Aramaları

`match_phrase` ve `slop` parametrelerini kullanarak kesin ifadeleri ve belirli bir yakınlıktaki sözcükleri aramayı keşfedin.

1. ders / 411 adım

Öbek ve Yakınlık Aramaları, CoddyKit'te ücretsiz bir Elasticsearch & Full Text Search Systems dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Elasticsearch & Full Text Search Systems öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Elasticsearch & Full Text Search Systems kursu toplamda 4 dersten oluşur.

Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.

Beyond Single Words

Welcome! So far, you've learned to search for individual words. But what if you need to find exact phrases like "quick brown fox" or words that appear close together?

This lesson introduces phrase and proximity searches, powerful techniques to make your searches more precise and relevant.

Finding Exact Phrases

Sometimes, the order of words matters. For example, "New York" is different from "York New". To find an exact sequence of words, we use a phrase query.

In Elasticsearch, the match_phrase query is perfect for this. It looks for all terms in your query string, in the exact order, and next to each other.

match_phrase Example

Let's see match_phrase in action. We'll simulate indexing a few documents and then search for the exact phrase "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.'");
  }
}

Phrase Matching Logic

The match_phrase query requires two conditions:

  • All terms present: Every word in your phrase ("quick", "brown", "fox") must exist in the document.
  • Exact order: The words must appear in the same sequence.
  • Contiguous: By default, the words must be right next to each other.

If any of these conditions aren't met, the document won't be considered a match.

Proximity Search with slop

What if you want to find words that are *close* to each other, but not necessarily an exact, contiguous phrase? This is where proximity search comes in.

Elasticsearch introduces the slop parameter for match_phrase queries. It allows for a certain number of "slops" or "gaps" between the words in your phrase.

Understanding slop

The slop parameter defines the maximum number of positions tokens can be "moved" to match the phrase.

  • slop: 0 (default) means words must be contiguous.
  • slop: 1 allows one word to be skipped or reordered slightly.
  • Higher slop values allow more flexibility in word order and distance.

Think of it as how many "moves" it takes to transform the document's words into your target phrase.

slop=1 Demonstration

Let's modify our previous search. We'll look for "quick fox" but allow for one word in between using "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 and Word Order

slop can also help match phrases where words are slightly reordered. For example, to match "brown quick" when searching for "quick brown" with slop: 1.

It measures the minimum number of moves to get the document's tokens into the query's token order. Each move counts as 1 slop unit.

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 vs. match

It's important to differentiate match_phrase from the basic match query you've seen before.

  • match query: Finds documents containing *any* of the words, regardless of order or proximity. It's good for general relevancy.
  • match_phrase query: Requires *all* words in the exact order and, by default, contiguous. With slop, it allows for controlled proximity. It's for high precision.

Choose match_phrase when the order and closeness of words are critical to your search.

Proximity Check

You want to find documents where "apple" and "pie" appear, with at most one word in between them, in that specific order.

Recap: Precise Searches

Great job! You've learned how to enhance your search precision:

  • match_phrase: For finding exact sequences of words.
  • slop parameter: To control the allowed distance and reordering between words in a phrase.

These techniques are crucial for building highly accurate and user-friendly search experiences. Keep practicing to master them!

Başlamak ücretsiz

Yapay zeka eğitmeniyle Elasticsearch & Full Text Search Systems öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
12
Dersler
48

Sıkça Sorulan Sorular

“Öbek ve Yakınlık Aramaları” dersi ücretsiz mi?

Evet — “Öbek ve Yakınlık Aramaları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Elasticsearch & Full Text Search Systems kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Elasticsearch & Full Text Search Systems kursu toplamda 4 dersten oluşur.

“Öbek ve Yakınlık Aramaları” dersinde ne öğreneceğim?

`match_phrase` ve `slop` parametrelerini kullanarak kesin ifadeleri ve belirli bir yakınlıktaki sözcükleri aramayı keşfedin. Elasticsearch & Full Text Search Systems ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Elasticsearch & Full Text Search Systems öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Elasticsearch & Full Text Search Systems, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Öbek ve Yakınlık Aramaları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Elasticsearch & Full Text Search Systems dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Elasticsearch & Full Text Search Systems dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Öbek ve Yakınlık Aramaları
  2. Belirsiz ve Joker Karakterli Sorgular
  3. Arama Sonuçlarını Vurgulama
  4. Kategorili Arama için Toplamalar
← Elasticsearch & Full Text Search Systems Sayfasına Dön