Apache Solr Tutorial

İbrahim Yıldız
3 min readAug 29, 2023

Apache Solr, açık kaynaklı ve Java tabanlı bir arama platformudur. Büyük miktardaki metin tabanlı veriyi hızlı ve etkili bir şekilde aramak, indekslemek ve analiz etmek için kullanılır. Özellikle metin madenciliği, içerik arama, öneri sistemleri, e-ticaret siteleri, döküman yönetimi gibi alanlarda kullanılmaktadır. İşte Apache Solr’un detaylı bir açıklaması:

Arama ve İndeksleme

Apache Solr, belirli bir veri kümesini indeksler ve bu indeksi kullanarak hızlı ve etkili bir şekilde arama yapmanızı sağlar. İndeksleme süreci, metin tabanlı veriyi parçalarına ayırarak (tokenization), anahtar kelimeleri çıkararak (token filtering), ters indeks oluşturarak (inverted index), bu indeksi optimize ederek ve saklayarak gerçekleşir.

Ters İndeks

Ters indeks, belirli bir terimin hangi belgede geçtiğini hızlıca bulmaya yarayan bir veri yapısıdır. Bu, büyük veri kümesi üzerinde etkili ve hızlı arama işlemleri yapmayı mümkün kılar.

Metin Analizi

Solr, metin analizi için çeşitli araçlar ve filtreler sunar. Bu sayede metni parçalara ayırabilir, büyük-küçük harf duyarlılığı sağlayabilir, özel karakterleri ele edebilir ve daha fazlasını yapabilirsiniz. Bu analizler, arama sırasında daha doğru sonuçlar elde etmenize yardımcı olur.

Özellik Zenginliği

Solr, zengin bir sorgu diline sahiptir ve birçok farklı arama özelliğini destekler. Örneğin, metin tabanlı sorguların yanı sıra filtreleme, sıralama, gruplama, aralık sorguları gibi çeşitli özellikler kullanılabilir.

Dağıtık ve Ölçeklenebilir

Apache Solr, büyük veri kümesi ile çalışabilme kabiliyetine sahiptir. Dağıtık mimari sayesinde veriyi bölebilir ve birden fazla sunucuda çalıştırarak ölçeklendirebilirsiniz. Bu, yüksek performans ve düşük gecikme süreleri sağlar.

Uzantılar ve Özelleştirmeler

Solr, çeşitli uzantılar, eklentiler ve özelleştirmeler kullanarak işlevselliğini genişletebilir. Özelleştirilebilir sorgu analizleri, özel indeksleme davranışları ve eklenti entegrasyonları ile sistemi ihtiyaca göre uyarlamak mümkündür.

Entegrasyon Yetenekleri

Solr, çeşitli veri kaynaklarından (veritabanları, XML, JSON, CSV dosyaları vb.) veri alabilir ve bunları indeksleyebilir. Ayrıca RESTful API’lar aracılığıyla veri eklemek, sorgulamak ve yönetmek mümkündür.

Veri Analitiği

Solr, metin tabanlı veri analitiği için de kullanılabilir. Örneğin, belirli kelimelerin kullanım sıklığı, trend analizi, duygu analizi gibi işlemler gerçekleştirilebilir.

Apache Solr, işlevselliği, esnekliği ve genişletilebilirliği ile geniş bir uygulama yelpazesi için tercih edilen bir arama platformudur. Uygulama geliştiricileri ve veri bilimcileri genellikle bu aracı metin tabanlı veri apache analizi ve arama projelerinde kullanırlar.

Terminolojisi

Koleksiyon (Collection): Veri kümesini temsil eden mantıksal bir gruplama. Her koleksiyon birden fazla shard’a sahip olabilir ve dağıtık verileri içerebilir.

Şard (Shard): Veri kümesinin parçalara bölünmüş halidir. Her bir shard, bir veya daha fazla replika tarafından barındırılabilir ve yükü dengelemek ve ölçeklenebilirlik sağlamak için kullanılır.

Replika (Replica): Bir shard’ın kopyasıdır. Replikalar yüksek kullanılabilirlik sağlar ve veri kaybını önler.

Ters İndeks (Inverted Index): Terimlerin belgelerle ilişkilendirildiği bir veri yapısıdır. Bu yapının kullanılması, hızlı ve etkili sorgu yapılabilmesini sağlar.

Şema (Schema): Veritabanının yapısını tanımlayan yapıdır. Belirli alanlar (field) ve bunların türleri, indeksleme ve sorgulama davranışları gibi özellikleri içerir.

Belge (Document): İndekslenmiş verinin temel birimi. Bir belge, birden çok alan (field) içerebilir ve bu alanlar sorgulanabilir.

Alan (Field): Bir belgedeki veri öğesini temsil eder. Örneğin, bir alan “başlık”, “metin” veya “tarih” olabilir.

Metin Analizi (Text Analysis): Gelen metin verilerinin parçalara ayrılması, temizlenmesi, normalleştirilmesi ve anahtar kelimelerin çıkarılması sürecidir.

Token: Metin analizi sırasında parçalara ayrılan metin parçalarıdır. Örneğin, cümleler veya kelimeler tokenlardır.

Filtre (Filter): Metin analizi aşamasında tokenleri dönüştürmek veya değiştirmek için kullanılan işlem. Örneğin, küçük harf yapma, sembollerin çıkarılması gibi.

Sorgu (Query): Kullanıcının veya uygulamanın veritabanından belirli verileri çekmek için gönderdiği taleptir.

Sorgu Dil (Query Language): Solr’de sorgu yapmak için kullanılan yapı ve komutlar dizisi. Temel olarak Lucene sorgu dilini kullanır.

Faset (Facet): Sorgu sonuçlarını analiz etmek ve sınıflandırmak için kullanılan bir araçtır. Sorgu sonuçlarını belirli kriterlere göre gruplandırabilir.

Öneri (Suggester): Kullanıcının girdisini analiz ederek önerilerde bulunan ve otomatik tamamlamayı sağlayan bir mekanizmadır.

REST API: Solr’ün HTTP tabanlı API’si. Veri eklemek, sorgulamak ve yönetmek için kullanılır.

Docker Üzerinde Kurulumu ve Kullanımı

docker pull solr

docker run -p 8983:8983 -t solr

http://host:8983
Document’larımızı ekleyeceğimiz bir Core oluşturuyoruzCore veritabanı olarak düşünebiliriz.
docker exec -it container-name solr create_core -c gettingstarted
container name 'docker ps' komutu ile bakabilirsiniz

Document’larımızı ekleyeceğimiz bir Core oluşturuyoruz. Core veritabanı olarak düşünebiliriz.

docker exec -it container-name solr create_core -c gettingstarted
container name 'docker ps' komutu ile bakabilirsiniz

Ardından Documents Kısmında Dökümanlarınızı Ekleyip Query Atabilirsiniz

Query Parametreleri :)

--

--