30 Temmuz 2018 Pazartesi

Elasticsearch Match Query Örnekleri


Merhabalar,
Bu yazımda inşaallah Match Query ile ilgili örnekler yapacağım. Faydalı olması dileğiyle…
İlk önce basit bir Match Query’si yapalım.
{
      “query” : {
           “match” : {
                 “ALAN_ISMI” : “Aranacak kelime ya da cümle”
                 }
           }
}
Burada arkadaşlar Alan_ismi yerine hangi alanda sorgu yapmak istiyorsak onu yazıyoruz. Yanında ki iki noktadan sonra ise arayacağımız kelime ya da cümlelerimizi arıyoruz. Match sorgusunun çalışma prensibini önceki yazılarımda paylaşmıştım. Bu yazımda da kısaca bahsedeyim.  Aranılan kelime ya da cümleyi kelimelere bölerek bunları gruplar. Daha sonra bu grup içinden arama yapar. Aradığımız şey şu cümle olsun : “Bismillah her hayrın başıdır.” Burada şu gruplara bölünür cümlemiz; “Bismillah”, “her”, “hayrın”, “başıdır” şeklinde kelimelere ayırır. Daha sonra ise bu kelimelerin bulunduğu her bir dökümana bir skor atar. Ne kadar çok kelime bulursa o kadar skor ataması yapılır. Bu da bize aradığımız doküman nesnesinin daha öne çıkmasına sebep olur. Burada şunu belirteyim. Aradığımız cümledeki kelimeleri “or” mantık operatörüyle bulmaya çalışır. Yani ya “Bismillah”, ya “her”, ya “hayrın”, ya “başıdır”, ya “Bismillah başıdır”, ya “her hayrın” vs. gibi. Ve bütün bu sonuçları ekrana getirir.
İkinci bir örnek yapalım.
{
      “query” : {
           “match” : {
                 “ALAN_ISMI” : {
                      “query” : “Aranılan kelime ya da cümle”,
                      “minimum_shoul_match” : 2
                      }
                 }
           }
}
Burada arkadaşlar daha önce tek kelimelerin bulunduğu dökümanları listelerken artık “minimum_should_match” ten dolayı listelemeyecektir. En az iki kelimenin eşleştiği kelimeleri getirecektir. Mesela; “Bismillah her”, “hayrın başıdır”, “her hayrın” vs. Tabi üç, dört ve daha fazla eşleşmeleride getirecektir.
Üçüncü bir örneğe bakalım.
{
      “query” : {
           “match” : {
                 “ALAN_ISMI” : {
                      “query” : “Aranacak kelime ya da cümle”,
                      “operator” : “and”
                      }
                 }
           }
}
Buradaki durumda ise “operator” özelliğine “and” operatörünü atadığımızda artık bize dönen sonuçlarda bütün kelimelerin geçmesini istemiş oluyoruz. Şunu ekleyeyim arkadaşlar. Burada sıra önemsizdir. Match sorgusu kelime bazında çalıştığından dolayı sıra önemsenmez. Sıranın önemsendiği sorgulara ayrıca bakacağız inşaallah.
Şimdi başka bir örneğe geçelim.
{
      “query” : {
           “match” : {
                 “ALAN_ISMI” : {
                      “query” : “Aranılan kelime yada cümle”,
                      “fuzziness” : 1
                      }
                 }
           }
}
Evet geldik yeni bir özelliğimize. Fuzziness özelliği tolerans değerimizdir. Burada belirttiğimiz değer kadar her kelimede harf toleransı gösterir. Biz burada bir harf tolerans göstermesini söyledik. Aradığımız kelime ya da cümlelerin her kelimesinde bir harf tolerans gösterip sorguyu buna göre bize gösterir. Mesela aradığımız şey; “anı paylaşalım” cümlesi olsun. Sonuçlarımızda “arı” kelimesini görebiliriz. Çünkü “n” harfini bir tolera edip “r” diye gösterdi. Fuzziness hakkında detaylı bilgi almak için elastic.co adresini ziyaret edebilirsiniz.

Hiç yorum yok:

Yorum Gönder

Elasticsearch'te alias Olayı

Merhabalar, Bu yazımda sizlere elasticsearch'teki alias olayını aktaracağım. Diyelim ki biz yeni bir index oluşturduk. Bu index'imi...