Elasticsearch Genel

Elasticsearch’te Relevans Temelli Sıralama Optimizasyonu

Elasticsearch'te Relevans Temelli Sıralama Optimizasyonu

Elasticsearch’te Relevans Temelli Sıralama Optimizasyonu

Elasticsearch, büyük veri kümelerini hızlı ve etkin bir biçimde indeksleyip sorgulama yeteneği sayesinde geliştiricilerin gözde araçlarından biridir. Arama motoru optimizasyonlarının (SEO) temel taşlarından biri olan relevans, Elasticsearch kullanılarak elde edilen sonuçların kullanıcı ile en uygun şekilde eşleşmesi anlamına gelir. Bu makalede, Elasticsearch’te arama relevansını nasıl optimize edebileceğinizi teknik detaylarla inceleyeceğiz.

Relevans Nedir ve Neden Önemlidir?

Relevans, kullanıcının sorgusuna en uygun sonuçların sunulmasıdır. Arama sonuçlarındaki sıralamalar, dokümanın sorguyla ne kadar ilişkili olduğunu belirler. Relevans sıralaması etkili yapıldığında kullanıcı memnuniyetini artırır ve aradıkları bilgiyi daha hızlı bulmalarını sağlar.

Elasticsearch Relevans Modelleri

Elasticsearch, temel olarak aşağıdaki faktörlere dayanarak relevansı hesaplar:

1. Term Frekansı (TF – Term Frequency): Doküman içerisindeki bir terimin kaç kez geçtiği.

  1. Doküman Frekansı (DF – Document Frequency): Terimin kaç dokümanda yer aldığı.
3. Ters Doküman Frekansı (IDF – Inverse Document Frequency): Bir terimi içeren döküman sayısına göre ağırlıklandırma.
  1. Alan Uzunluğu (Field Length): Terimlerin bulunduğu dokümanın uzunluğu.

Elasticsearch’te Relevans Optimizasyonu Nasıl Yapılır?

1. Boosting Kullanımı

Belirli alanlara ekstra ağırlık vererek arama sonuçlarında önemini artırabilirsiniz. Örneğin, ürün adlarına farklı bir ağırlık vermek isteyebilirsiniz.

“`json
{
“query”: {
“multi_match”: {
“query”: “laptop”,
“fields”: [“title^3”, “description”] }
}
}
“`

Bu sorguda, title alanına 3 kat önem verilmiştir.

2. Fonksiyon Skor Sorguları

Fonksiyon skorları ile dokümanlara dinamik bir biçimde ağırlık verebilirsiniz. Örneğin, dokümanın oluşturulma tarihini hesaplayarak daha yeni dokümanları öne çıkarabilirsiniz.

“`json
{
“query”: {
“function_score”: {
“query”: {
“match”: { “description”: “laptop” }
},
“functions”: [
{
“gauss”: {
“created_at”: {
“origin”: “now”,
“scale”: “10d”
}
}
}
],
“boost_mode”: “multiply”
}
}
}
“`

3. Tercih Edilen Synonymlerin Kullanımı

Relevansın artırılması için synonym (eşanlamlı) desteği kullanabilirsiniz. Bir kelimenin sinonimlerini tanıtarak ilgili sorgulamaların çeşitliliğini artırabilirsiniz.

“`json
“settings”: {
“analysis”: {
“filter”: {
“my_synonyms”: {
“type”: “synonym”,
“synonyms”: [
“laptop, notebook”
] }
}
}
}
“`

4. Custom Score Scripting

Özel skor hesaplamaları yaparak, relevansı daha ince ayarlarla kontrol etmek mümkündür. Aşağıdaki örnekte, script kullanarak kullanıcı puanları da göz önünde bulundurulabilir:

“`json
{
“query”: {
“script_score”: {
“query”: {
“match_all”: {}
},
“script”: {
“source”: “_score * doc[‘user_rating’].value”
}
}
}
}
“`

Performans İyileştirmeleri

Relevansın düzgün hesaplanması kadar performansın da optimize edilmesi önemlidir. Yayınladığınız projelerde yüksek performanslı altyapı kullanarak Elasticsearch sorgularınızı optimize edebilirsiniz. Bunun için sanal sunucu veya cloud sunucu çözümlerini göz önünde bulundurabilirsiniz. Yüksek performans gereken durumlarda fiziksel sunucu seçeneği ile de veritabanı performansınızı maksimum düzeye çıkarabilirsiniz.

Bu yazıda, Elasticsearch relevans optimizasyonu için temel ve ileri adımları ele aldık. Arama motorları ve kullanıcı deneyiminin daha da geliştirilebilmesi için relevans optimizasyonunu etkili bir şekilde uygulamak önemlidir. Unutulmamalıdır ki, uygulama ihtiyaçlarınıza göre her projenin optimizasyon yöntemleri farklı olabilir. Başarıya ulaşmanız için sürekli test etmek ve ayarlamalar yapmak önemlidir.