Merhabalar,
Bu yazımda inşaallah Match Query ile ilgili örnekler yapacağım. Faydalı olması dileğiyle…
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”
}
}
}
“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
}
}
}
}
“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”
}
}
}
}
“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
}
}
}
}
“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.