SlideShare a Scribd company logo
1
İbrahim TAŞYURT
Elasticsearch ve Udemy
Kullanım Pratikleri
Ajanda
2
Udemy
Elasticsearch ve Temel Arama Kavramları
Udemy’de Elasticsearch kullanımı:
İndeksleme
Temel arama işlevleri
Metin Analizi
Çoklu dil desteği
TF ve IDF değerlerinin çıkarımı
Udemy
3
Video tabanlı Online Eğitim Platformu ve Pazaryeri
+12 Milyon Aktif Kullanıcı
50 Bin Ders
Web, Mobil ve AppleTV uygulamaları
San Francisco, Ankara ve Dublin ofisleri
Toplam 254 çalışan, 85+ Mühendis
Udemy Türkiye Ofisi:
Udemy (Discovery)
4
Amaç: Doğru kullanıcıyı doğru dersle buluşturmak
Alt Takımlar
Arama (Search)
Öneri (Recommendation)
Kanallar(Channel)
Veri Bilimi (Data Science) destekli çalışmalar
Kullanılan araçlardan bazıları:
Elasticsearch
5
Arama Motoru ve İlişkisel Olmayan Veritabanı
Java ile geliştirilmiş
Açık Kaynaklı
Apache Lucene tabanlı
Dağıtık
Hata dayanıklı(Fault tolerant)
Ölçeklendirilebilir
Apache Solr ile karşılaştırma
6
Ölçeklendirebilme avantajı
İdame Kolaylığı
Daha kullanışlı API
Temel Elasticsearch (ES) Kavramları
7
Node: Her bir çalıştırılabilir ES sunucusu
Cluster(Küme): Verinin dağıtık ve tutarlı şekilde tutulduğu Node grubu
Index: Benzer karakterdeki verilerin(doküman) saklandığı yapı
Document(Doküman): İndekslenebilen temel veri yapısı
JSON
Field(Alan): Dokümanın üstündeki alanlar
Shard: Her bir indeksin içinde dokümanların bir kısmını tutan bölüm
Örnek Cluster Yapısı
8
Örnek:
4 Node
2 Shard
1 Replica
Herhangi bir Node
devredışı kaldığında,
cluster çalışmaya
devam eder.
Shard ve Replicalar
9
Shard:
Her shard bir Lucene indeksidir.
Sorgular her shard üzerinde çalıştıktan sonra, koordinatör
node üzerinde birleştirilir (scatter/gather).
Shard sayısı performans/ölçeklendirme üzerinde etkilidir.
Replica:
Hata dayanıklılığı
Sorgu performansında iyileşme
Temel Arama Kavramları
10
Relevance(İlgi): Bir aramanın, dokümanla örtüşmesi/benzerliği.
Terim Frekansı(Term Frequency, TF):
Bir terimin metinde geçme sıklığı
Ters Doküman Frekansı(Inverse Document Frequency, IDF)
Bir terimin ne kadar az dokümanda geçtiğinin ölçüsü
Ayırdedicilik
Score(Skor): İlginin numerik ifadesi
Terim Frekansı(Örnek)
11
“Java Programlama ve Temel Programlama Mantığı”
“Java Programlama ve Veri Madenciliği”
“Programlama” aramasında, ilk doküman daha yüksek skora sahip olacaktır.
Terim Java Programlama ve Temel Mantığı
TF 1 2 1 1 1
Terim Java Programlama ve Veri Madenciliği
TF 1 1 1 1 1
Ters Doküman Frekansı (Örnek)
12
Senaryo:
Veri setimiz 100 dokümandan oluşsun.
Bunların 10’unda “Java”, 3’ünde “Elasticsearch” terimleri geçiyor
olsun.
“Elasticsearch” daha yüksek IDF değerine sahip(daha ayırt edici).
Sonuç:
“Java Elasticsearch” aramasında, “Elasticsearch” içeren
dokümanlar daha yüksek skora sahip olur(arama sonuçlarında
Udemy’de Elasticsearch Kullanımı
13
Udemy’de Elasticsearch
14
Versiyon 1.5.2
Canlı, Test ve Geliştirme Kümeleri
7 Node
Çoklu shard ve replica’lar
REST API ile erişim
İstemci Kütüphaneleri:
elasticdsl (Python)
Spring Data (Java)
Kullanılan Araçlar
15
HQ Plugin’i
Cluster’ın izlenmesi ve basit yönetimi
Datadog/New Relic
Performansın ve kaynak kullanımının görüntülenmesi
Sense
Google Chrome Plugin’i
Cluster’a REST istekleri gönderimi
Elasticdump
İndekslenen Dokümanlar
16
Dersler(Course)
Kullanıcılar(User)
Arama Kayıtları(Search Log)
Kullanıcı Mesajları(Message Thread)
Ders Tartışmaları (Course Discussion)
İndeksleme
17
Dokümanlar veritabanından alınarak Elasticsearch’e indekslenir
Gerçek Zamanlı İndeksleme:
Verilerdeki değişiklikler uygulama üzerinden fark edilerek değişen dokümanlar gerçek
zamanlı olarak indekslenir
Periyodik İndeksleme:
Bütün dokümanlar periyodik olarak Elasticsearch üzerinde güncellenirler
Toplu(Bulk) olarak yapıldığı için gerçek zamanlı indekslemeye göre daha performanslıdır
İndekslenen alanlar (Ders)
18
Ders sahibi(instructor) kaynaklı alanlar:
Başlık, Altbaşlık, Ders Tanımı, Ders Veren(instructor) adı….
Dersin kalitesi/performansı ile alakalı alanlar:
Öğrenci sayısı, Puan, Yorumlar, Kazanç, İzlenme miktarı….
Dersin ait olduğu kategori/alt başlık/koleksiyon bilgileri
Dersin ücretine ilişkin bilgiler
Ders ile alakalı etiketler(Tag)
Manuel ve Algoritmik
Temel Arama İşlevleri
19
Amaç:
Aramaya uygun dokümanları(dersleri) bulmak
Aramaya daha çok uyan dokümanların arama sonuçlarında yukarıda
görünmesi
Udemy Arama Sonuçları
Uyarlanmış (Custom) bir fonksiyonla sıralanır
Bileşenler:
Kullanıcı kaynaklı alanlar
Kullanıcı kaynaklı alanlar
20
Başlık, Altbaşlık, Ders verenin adı vs.
Genel olarak TF-IDF hesaplamasına dayalı, uyarlanmış(custom) bir skor
fonksiyonu kullanılır.
Her alan farklı şekilde ağırlıklandırılır(boosting).
Arama yapan kullanıcının dilindeki dersler daha yüksek skorlandırılır.
Kalite/Performans kaynaklı alanlar
21
Dersin aldığı kullanıcı puanları,yorumlar, kazanç, izlenme vs.
Her alan, uyarlanmış birer fonksiyon üzerinden, skora etki eder.
Alanların ağırlıkları ve fonksiyonların parametreleri, geçmiş veriye bağlı
olarak Makine Öğrenmesi yöntemleriyle belirlenir
Filtreleme ve Gruplama
22
Kullanıcının arama sonuçlarını daraltmasını ve aradığı dersi daha kolay
bulmasını sağlar
Elasticsearch’ün filtre ve gruplama(aggregation) özellikleri kullanılır
Filtre Alanları:
Dil
Seviye
Ücret(Ücretli/Ücretsiz)
Özellikler(Altyazı, Quiz, Kodlama Egzersizi)
Filtreleme ve Gruplama (2)
23
Sıralama
24
Kullanıcı arama sonuçlarını belli kriterlere göre sıralayabilir
Kriterler:
İlgi(varsayılan)
Fiyat
Puan
Eklenme Tarihi
Elasticsearch’ün sıralama(sort) işlevi ile yapılır
Otomatik Tamamlama
25
Arama kutusunda, kullanıcının aramasını otomatik olarak tamamlamaya
yardım eder.
Kullanılan bilgiler:
Ders başlığı
Ders veren kullanıcı isimleri
Önceki popüler arama kayıtları
Burada, Elasticsearch’ün metin eşleştirme (text match) işlevleri kullanılır
Prefix eşleşmesi
Öneri (Bunu mu demek istediniz?)
26
Arama sonucuna uygun bir sonuç bulunamadığında alternatif öneriler için
kullanılır.
Elasticsearch’ün öneri(‘suggest’) işlevinden faydalanılır.
Dokümanlarda yer alan daha sık görülen benzer sözcükler öneri olarak
sunulur.
Metin Analizi ve Temizlenmesi
27
Metinler çoğunlukla analiz ve temizleme işlemine ihtiyaç duyarlar:
Dokümanlardaki alanlar
Arama terimleri
Bu amaçla Elasticsearch Analyzer’ları kullanılır.
Her alan için ayrı bir Analyzer tanımlanabilir
Analyzer işlevleri:
Ayrıştırma(Tokenization): Metni parçalara(token) ayırma
Udemy’de Metin Analizi
28
Desteklenen diller:
İngilizce
Japonca
Kullanılan Analyzer’lar
Elasticsearch üzerinde gelen standard Analyzer’lar
Udemy tarafından geliştirilen ‘Udemy Analyzer’
Plugin
Japonca ayrıştırmasını yapan ‘RBL Analyzer’
Metin Analizi İşlemleri
29
Etkisiz sözcük ayrıştırılması
‘A Java Course for Beginners’ -> ‘Java’, ‘Course’ ,’Beginners’
Özel karakterler içeren sözcükler
‘C++’, ‘PL/SQL’
ASCII olmayan karakterlerin dönüşümleri
‘ÇAĞDAŞ’->’CAGDAS’,’ÇAĞDAŞ’
Eşanlamlı sözcüklerin işlenmesi
‘js’,’java script’, ‘javascript’-> ‘javascript’
Çoklu dil desteği (Japonca)
30
Japonca olan doküman metinler, Japonca Analyzer’ı (RBL) kullanılarak ayrı
alanlarda indekslenir.
Japonca arama terimleri, bu alanlar üzerinden sorgulanır.
Arama teriminin dilini saptamak için, Rosette’nın ilgili API’ı kullanılır.
TF-IDF Değerlerinin Çıkarımı
31
Gereksinim:
Arama algoritmasının kişiselleştirilebilmesi amacıyla, arama sonuçlarına ait TF ve IDF
değerlerinin alınması
Problem:
Elasticsearch bu değerleri sadece açıklama (explain) modu açıkken veriyor.
Performanslı değil
Çözüm:
Elasticsearch Agent
Bytecode instrumentation ile Elasticsearch davranışı çalışma anında değiştirilerek
Gelecek Planları
32
Elasticsearch versiyonunu 1.5.2’den 2.x.y’ye yükseltme
Filtre yapısının değiştirilmesi
Elasticsearch Agent’ın 2.x.y’e uygun olarak, ya da Plugin olarak yeniden yazılması
Cluster optimizasyonları
Metin analizinde iyileştirmeler
Skor fonksiyonunda iyileştirmeler
33
Teşekkürler

More Related Content

What's hot

Scalable crawling with Kafka, scrapy and spark - November 2021
Scalable crawling with Kafka, scrapy and spark - November 2021Scalable crawling with Kafka, scrapy and spark - November 2021
Scalable crawling with Kafka, scrapy and spark - November 2021
Max Lapan
 
Indexing & Query Optimization
Indexing & Query OptimizationIndexing & Query Optimization
Indexing & Query Optimization
MongoDB
 
애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향 애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향
Young-Ho Cho
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Web Services Korea
 

What's hot (20)

What I learnt: Elastic search & Kibana : introduction, installtion & configur...
What I learnt: Elastic search & Kibana : introduction, installtion & configur...What I learnt: Elastic search & Kibana : introduction, installtion & configur...
What I learnt: Elastic search & Kibana : introduction, installtion & configur...
 
MongoDB - NoSQL Overview
MongoDB - NoSQL OverviewMongoDB - NoSQL Overview
MongoDB - NoSQL Overview
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화
 
Elasticsearch for Data Analytics
Elasticsearch for Data AnalyticsElasticsearch for Data Analytics
Elasticsearch for Data Analytics
 
Introduction to elasticsearch
Introduction to elasticsearchIntroduction to elasticsearch
Introduction to elasticsearch
 
Elasticsearch From the Bottom Up
Elasticsearch From the Bottom UpElasticsearch From the Bottom Up
Elasticsearch From the Bottom Up
 
Elasticsearch presentation 1
Elasticsearch presentation 1Elasticsearch presentation 1
Elasticsearch presentation 1
 
MongoDB Overview
MongoDB OverviewMongoDB Overview
MongoDB Overview
 
Elastic Search
Elastic SearchElastic Search
Elastic Search
 
Scalable crawling with Kafka, scrapy and spark - November 2021
Scalable crawling with Kafka, scrapy and spark - November 2021Scalable crawling with Kafka, scrapy and spark - November 2021
Scalable crawling with Kafka, scrapy and spark - November 2021
 
MongoDB Workshop
MongoDB WorkshopMongoDB Workshop
MongoDB Workshop
 
Elasticsearch Tutorial | Getting Started with Elasticsearch | ELK Stack Train...
Elasticsearch Tutorial | Getting Started with Elasticsearch | ELK Stack Train...Elasticsearch Tutorial | Getting Started with Elasticsearch | ELK Stack Train...
Elasticsearch Tutorial | Getting Started with Elasticsearch | ELK Stack Train...
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Indexing & Query Optimization
Indexing & Query OptimizationIndexing & Query Optimization
Indexing & Query Optimization
 
Indexing with MongoDB
Indexing with MongoDBIndexing with MongoDB
Indexing with MongoDB
 
애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향 애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
Content Management with MongoDB by Mark Helmstetter
 Content Management with MongoDB by Mark Helmstetter Content Management with MongoDB by Mark Helmstetter
Content Management with MongoDB by Mark Helmstetter
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
 

Viewers also liked

Viewers also liked (7)

Elastic search custom chinese analyzer
Elastic search custom chinese analyzerElastic search custom chinese analyzer
Elastic search custom chinese analyzer
 
Elasticsearch Arcihtecture & What's New in Version 5
Elasticsearch Arcihtecture & What's New in Version 5Elasticsearch Arcihtecture & What's New in Version 5
Elasticsearch Arcihtecture & What's New in Version 5
 
Использование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуИспользование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайту
 
I just hacked your app! - Marcos Placona - Codemotion Rome 2017
I just hacked your app! - Marcos Placona - Codemotion Rome 2017I just hacked your app! - Marcos Placona - Codemotion Rome 2017
I just hacked your app! - Marcos Placona - Codemotion Rome 2017
 
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
 
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
 
Data modeling for Elasticsearch
Data modeling for ElasticsearchData modeling for Elasticsearch
Data modeling for Elasticsearch
 

Similar to Elasticsearch ve Udemy Kullanım Pratikleri (10)

Arama Sistemleri
Arama SistemleriArama Sistemleri
Arama Sistemleri
 
Windows 7 Search
Windows 7 SearchWindows 7 Search
Windows 7 Search
 
Windows 7 ile Search (Arama)
Windows 7 ile Search (Arama)Windows 7 ile Search (Arama)
Windows 7 ile Search (Arama)
 
İlişkisel Veritabanları, ORM ve Doctrine
İlişkisel Veritabanları, ORM ve Doctrineİlişkisel Veritabanları, ORM ve Doctrine
İlişkisel Veritabanları, ORM ve Doctrine
 
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
 
Ozgur web-gunleri-sunum
Ozgur web-gunleri-sunumOzgur web-gunleri-sunum
Ozgur web-gunleri-sunum
 
C# OOP
C# OOPC# OOP
C# OOP
 
Veri tabanı
Veri tabanıVeri tabanı
Veri tabanı
 
Azure Cloud Engineer - Bölüm 9
Azure Cloud Engineer - Bölüm 9Azure Cloud Engineer - Bölüm 9
Azure Cloud Engineer - Bölüm 9
 
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
 

Elasticsearch ve Udemy Kullanım Pratikleri

  • 1. 1 İbrahim TAŞYURT Elasticsearch ve Udemy Kullanım Pratikleri
  • 2. Ajanda 2 Udemy Elasticsearch ve Temel Arama Kavramları Udemy’de Elasticsearch kullanımı: İndeksleme Temel arama işlevleri Metin Analizi Çoklu dil desteği TF ve IDF değerlerinin çıkarımı
  • 3. Udemy 3 Video tabanlı Online Eğitim Platformu ve Pazaryeri +12 Milyon Aktif Kullanıcı 50 Bin Ders Web, Mobil ve AppleTV uygulamaları San Francisco, Ankara ve Dublin ofisleri Toplam 254 çalışan, 85+ Mühendis Udemy Türkiye Ofisi:
  • 4. Udemy (Discovery) 4 Amaç: Doğru kullanıcıyı doğru dersle buluşturmak Alt Takımlar Arama (Search) Öneri (Recommendation) Kanallar(Channel) Veri Bilimi (Data Science) destekli çalışmalar Kullanılan araçlardan bazıları:
  • 5. Elasticsearch 5 Arama Motoru ve İlişkisel Olmayan Veritabanı Java ile geliştirilmiş Açık Kaynaklı Apache Lucene tabanlı Dağıtık Hata dayanıklı(Fault tolerant) Ölçeklendirilebilir
  • 6. Apache Solr ile karşılaştırma 6 Ölçeklendirebilme avantajı İdame Kolaylığı Daha kullanışlı API
  • 7. Temel Elasticsearch (ES) Kavramları 7 Node: Her bir çalıştırılabilir ES sunucusu Cluster(Küme): Verinin dağıtık ve tutarlı şekilde tutulduğu Node grubu Index: Benzer karakterdeki verilerin(doküman) saklandığı yapı Document(Doküman): İndekslenebilen temel veri yapısı JSON Field(Alan): Dokümanın üstündeki alanlar Shard: Her bir indeksin içinde dokümanların bir kısmını tutan bölüm
  • 8. Örnek Cluster Yapısı 8 Örnek: 4 Node 2 Shard 1 Replica Herhangi bir Node devredışı kaldığında, cluster çalışmaya devam eder.
  • 9. Shard ve Replicalar 9 Shard: Her shard bir Lucene indeksidir. Sorgular her shard üzerinde çalıştıktan sonra, koordinatör node üzerinde birleştirilir (scatter/gather). Shard sayısı performans/ölçeklendirme üzerinde etkilidir. Replica: Hata dayanıklılığı Sorgu performansında iyileşme
  • 10. Temel Arama Kavramları 10 Relevance(İlgi): Bir aramanın, dokümanla örtüşmesi/benzerliği. Terim Frekansı(Term Frequency, TF): Bir terimin metinde geçme sıklığı Ters Doküman Frekansı(Inverse Document Frequency, IDF) Bir terimin ne kadar az dokümanda geçtiğinin ölçüsü Ayırdedicilik Score(Skor): İlginin numerik ifadesi
  • 11. Terim Frekansı(Örnek) 11 “Java Programlama ve Temel Programlama Mantığı” “Java Programlama ve Veri Madenciliği” “Programlama” aramasında, ilk doküman daha yüksek skora sahip olacaktır. Terim Java Programlama ve Temel Mantığı TF 1 2 1 1 1 Terim Java Programlama ve Veri Madenciliği TF 1 1 1 1 1
  • 12. Ters Doküman Frekansı (Örnek) 12 Senaryo: Veri setimiz 100 dokümandan oluşsun. Bunların 10’unda “Java”, 3’ünde “Elasticsearch” terimleri geçiyor olsun. “Elasticsearch” daha yüksek IDF değerine sahip(daha ayırt edici). Sonuç: “Java Elasticsearch” aramasında, “Elasticsearch” içeren dokümanlar daha yüksek skora sahip olur(arama sonuçlarında
  • 14. Udemy’de Elasticsearch 14 Versiyon 1.5.2 Canlı, Test ve Geliştirme Kümeleri 7 Node Çoklu shard ve replica’lar REST API ile erişim İstemci Kütüphaneleri: elasticdsl (Python) Spring Data (Java)
  • 15. Kullanılan Araçlar 15 HQ Plugin’i Cluster’ın izlenmesi ve basit yönetimi Datadog/New Relic Performansın ve kaynak kullanımının görüntülenmesi Sense Google Chrome Plugin’i Cluster’a REST istekleri gönderimi Elasticdump
  • 16. İndekslenen Dokümanlar 16 Dersler(Course) Kullanıcılar(User) Arama Kayıtları(Search Log) Kullanıcı Mesajları(Message Thread) Ders Tartışmaları (Course Discussion)
  • 17. İndeksleme 17 Dokümanlar veritabanından alınarak Elasticsearch’e indekslenir Gerçek Zamanlı İndeksleme: Verilerdeki değişiklikler uygulama üzerinden fark edilerek değişen dokümanlar gerçek zamanlı olarak indekslenir Periyodik İndeksleme: Bütün dokümanlar periyodik olarak Elasticsearch üzerinde güncellenirler Toplu(Bulk) olarak yapıldığı için gerçek zamanlı indekslemeye göre daha performanslıdır
  • 18. İndekslenen alanlar (Ders) 18 Ders sahibi(instructor) kaynaklı alanlar: Başlık, Altbaşlık, Ders Tanımı, Ders Veren(instructor) adı…. Dersin kalitesi/performansı ile alakalı alanlar: Öğrenci sayısı, Puan, Yorumlar, Kazanç, İzlenme miktarı…. Dersin ait olduğu kategori/alt başlık/koleksiyon bilgileri Dersin ücretine ilişkin bilgiler Ders ile alakalı etiketler(Tag) Manuel ve Algoritmik
  • 19. Temel Arama İşlevleri 19 Amaç: Aramaya uygun dokümanları(dersleri) bulmak Aramaya daha çok uyan dokümanların arama sonuçlarında yukarıda görünmesi Udemy Arama Sonuçları Uyarlanmış (Custom) bir fonksiyonla sıralanır Bileşenler: Kullanıcı kaynaklı alanlar
  • 20. Kullanıcı kaynaklı alanlar 20 Başlık, Altbaşlık, Ders verenin adı vs. Genel olarak TF-IDF hesaplamasına dayalı, uyarlanmış(custom) bir skor fonksiyonu kullanılır. Her alan farklı şekilde ağırlıklandırılır(boosting). Arama yapan kullanıcının dilindeki dersler daha yüksek skorlandırılır.
  • 21. Kalite/Performans kaynaklı alanlar 21 Dersin aldığı kullanıcı puanları,yorumlar, kazanç, izlenme vs. Her alan, uyarlanmış birer fonksiyon üzerinden, skora etki eder. Alanların ağırlıkları ve fonksiyonların parametreleri, geçmiş veriye bağlı olarak Makine Öğrenmesi yöntemleriyle belirlenir
  • 22. Filtreleme ve Gruplama 22 Kullanıcının arama sonuçlarını daraltmasını ve aradığı dersi daha kolay bulmasını sağlar Elasticsearch’ün filtre ve gruplama(aggregation) özellikleri kullanılır Filtre Alanları: Dil Seviye Ücret(Ücretli/Ücretsiz) Özellikler(Altyazı, Quiz, Kodlama Egzersizi)
  • 24. Sıralama 24 Kullanıcı arama sonuçlarını belli kriterlere göre sıralayabilir Kriterler: İlgi(varsayılan) Fiyat Puan Eklenme Tarihi Elasticsearch’ün sıralama(sort) işlevi ile yapılır
  • 25. Otomatik Tamamlama 25 Arama kutusunda, kullanıcının aramasını otomatik olarak tamamlamaya yardım eder. Kullanılan bilgiler: Ders başlığı Ders veren kullanıcı isimleri Önceki popüler arama kayıtları Burada, Elasticsearch’ün metin eşleştirme (text match) işlevleri kullanılır Prefix eşleşmesi
  • 26. Öneri (Bunu mu demek istediniz?) 26 Arama sonucuna uygun bir sonuç bulunamadığında alternatif öneriler için kullanılır. Elasticsearch’ün öneri(‘suggest’) işlevinden faydalanılır. Dokümanlarda yer alan daha sık görülen benzer sözcükler öneri olarak sunulur.
  • 27. Metin Analizi ve Temizlenmesi 27 Metinler çoğunlukla analiz ve temizleme işlemine ihtiyaç duyarlar: Dokümanlardaki alanlar Arama terimleri Bu amaçla Elasticsearch Analyzer’ları kullanılır. Her alan için ayrı bir Analyzer tanımlanabilir Analyzer işlevleri: Ayrıştırma(Tokenization): Metni parçalara(token) ayırma
  • 28. Udemy’de Metin Analizi 28 Desteklenen diller: İngilizce Japonca Kullanılan Analyzer’lar Elasticsearch üzerinde gelen standard Analyzer’lar Udemy tarafından geliştirilen ‘Udemy Analyzer’ Plugin Japonca ayrıştırmasını yapan ‘RBL Analyzer’
  • 29. Metin Analizi İşlemleri 29 Etkisiz sözcük ayrıştırılması ‘A Java Course for Beginners’ -> ‘Java’, ‘Course’ ,’Beginners’ Özel karakterler içeren sözcükler ‘C++’, ‘PL/SQL’ ASCII olmayan karakterlerin dönüşümleri ‘ÇAĞDAŞ’->’CAGDAS’,’ÇAĞDAŞ’ Eşanlamlı sözcüklerin işlenmesi ‘js’,’java script’, ‘javascript’-> ‘javascript’
  • 30. Çoklu dil desteği (Japonca) 30 Japonca olan doküman metinler, Japonca Analyzer’ı (RBL) kullanılarak ayrı alanlarda indekslenir. Japonca arama terimleri, bu alanlar üzerinden sorgulanır. Arama teriminin dilini saptamak için, Rosette’nın ilgili API’ı kullanılır.
  • 31. TF-IDF Değerlerinin Çıkarımı 31 Gereksinim: Arama algoritmasının kişiselleştirilebilmesi amacıyla, arama sonuçlarına ait TF ve IDF değerlerinin alınması Problem: Elasticsearch bu değerleri sadece açıklama (explain) modu açıkken veriyor. Performanslı değil Çözüm: Elasticsearch Agent Bytecode instrumentation ile Elasticsearch davranışı çalışma anında değiştirilerek
  • 32. Gelecek Planları 32 Elasticsearch versiyonunu 1.5.2’den 2.x.y’ye yükseltme Filtre yapısının değiştirilmesi Elasticsearch Agent’ın 2.x.y’e uygun olarak, ya da Plugin olarak yeniden yazılması Cluster optimizasyonları Metin analizinde iyileştirmeler Skor fonksiyonunda iyileştirmeler