2) Superalgos’u Githup’a bağlamanız için bir tokene ihtiyaç vardır. Bu linke tıklayarak alabilirsiniz https://github.com/settings/tokens/new “Ayrıca bu alanda repo ve workflow seçeneklerini işaretlemeniz gerekmektedir.”, aldığınız tokeni 6. adımda kullanacağız bir yere kaydedin.
3) Superalgos’u kendi GitHub hesabınıza forklamalıyız, bunun için linkteki projeyi kendinize fork edin, https://github.com/Superalgos/Superalgos Not: Copy the Master branch only seçeneği işaretli ise kaldırın.
4) Forkladığımız projeyi kendi bilgisayarımıza indireceğiz. Bunun için Git uygulamasını açıp projeyi klonlamamız gerekiyor. Aşağıdaki URL alanını forkladığınız proje linki ile değiştirin.
Eğer tüm adımları başarıyla tamamladıysanız Superalgosu kurmuş bulunmaktasınız. node platform komutu ile Superalgosu çalıştırabilirsiniz. Not: Superalgos çalışma portu 34248’dir. IPv4 adresinizi öğrenip portu tarayıcınızda açabilirsiniz. Örnek: 192.168.1.5:34248
Bu günlerde aramaları her yerde kullanıyoruz. İster bir çevrimiçi mağazadan satın alıyor olun, ister bir blogu ziyaret ediyor olun.
Web sitesinin tamamını taramak istemediğiniz için bir yerde bir arama kutusu olmasını beklersiniz.
Bu nedenle arama yapabilmek, görevleri daha kolay ve daha hızlı bitirmenize yardımcı olacaktır.
Ayrıca bu arama kutularının akıllı olmasını beklemeye geldik.
Apache kelimesinin tamamını yazmak zorunda kalmak istemiyorum.
Öneriler içeren bir arama kutusu bekliyorum ve sonuçların ve önerilerin gelmesini istemiyorum
Aramanın akıllı olmasını ve bana en alakalı sonuçları önce vermesini istiyorum.
Örneğin, bir çevrimiçi mağazadan bir akıllı telefon ararsam ancak telefon aksesuarları arasında gezinmem gerekirse bir telefona ulaşmadan önce, muhtemelen başka bir yere gideceğim.
Ayrıca, aralarından seçim yapabileceğiniz daha fazla parametre var.
Bu nedenle iyi bir anahtar kelime ile arama çoğu zaman yeterli değildir.
Kullanıcının ne yapacağını daraltmak için bazı araçlara ihtiyacınız var.
Ekranın boyutunu seçerek akıllı telefon aramamı daraltabilmeliyim.
Sonra fiyat aralığı ve aralarından seçim yapabileceğim sadece birkaç telefon olana kadar parametreleri zenginleştirebilirim.
Son olarak, performans meselesi var çünkü kimse beklemek istemiyor. Birkaç saniye beklemek zorunda ve bir arama için kabul edilemez.
Ardından, arama veya verilerinizi sağlamak istiyorsanız, geri dönen tüm bu sorunlarla uğraşmak zorunda kalacaksınız.
ilgili arama sonuçları.
İstatistikleri döndürme ve filtre seçenekleri. Ve tüm bunları hızla yapmak.
Solr gibi arama motorlarının devreye girdiği yer burasıdır, çünkü tam olarak bu gereksinimleri karşılamak üzere tasarlanmıştır.
Zorluklar.
Solr, açık kaynak kodlu ve dağıtılmış bir veri deposudur ve açık kaynak kodlu Apache Lucene üzerine kurulmuştur.
Kendi uygulamanızda arama işlevselliğini uygulamanıza izin veren kaynak arama motoru kitaplığı.
Java'da veya C sharp, PHP, Python Ruby vb. gibi diğer popüler programlama dillerinde yazılmıştır.
Yine de, sağlanan kitaplıklardan birini kullanmak istemiyorsanız, Json'da HTTP üzerinden veri gönderebilirsiniz veya dizine alınmış arama ve Solr kümenizi yönetmek için biçimler. Solr, Lucene motorunu alıp uzatıyor, indekslemeyi ve aramayı daha hızlı ve kolay hale getirmek için .
Dizinler oluşturmak ve SQL'i hızlandırmak için bir arama motorunu ilişkisel bir veritabanının üzerine yerleştirebilirsiniz. sorguları veya Cassandra gibi NoSQLl veri deponuzdaki verileri indeksleyebilir ve arama yetenekleri ekleyebilirsiniz.
Ayrıca, Solr gibi modern arama motorları, verilerinizi NoSQL verisi olarak kullanabilmeniz için depolama konusunda iyi bir iş çıkarır.
güçlü arama yetenekleriyle saklayın.
Şimdi zorluklara daha yakından bakalım
arama motorları genellikle Solr'un bunları çözme yaklaşımını görür ve bunlarla karşılaşır.
Solr’a neden ihtiyaç duyacağınız konusunda daha iyi bir fikir edinmek için
Bir örneğe bakalım.
Binlerce işin olduğu bir işe alım Web sitesinde gezindiğinizi ve kullanıcılara iş vermek istediğinizi hayal edin.
Belirli bir meslek için tüm Web sitesinde arama yapın.
İlk göreviniz anahtar kelime araması uygulamaktır.
Örneğin, bir kullanıcı Java Developer için arama yaparsa, bu kelimeleri içeren tüm işleri döndürürsünüz.
Ancak, Web sitenizde bu kelimeleri arayan çok sayıda kullanıcı varsa,
uzun sürebilir ve kullanıcılarınızın beklemesini istemezsiniz.
Solr’ın yardımcı olduğu yer burasıdır, çünkü indekslemek için yüksek performanslı bir arama motoru kitaplığı olan Lucene’i kullanır.
tüm verilerinizi bulun.
İndeks, verilerinizle birlikte oluşturduğunuz ve daha hızlı izin vermesi amaçlanan bir veri yapısıdır.
Arama.
Çoğu veritabanındaki alanlara dizinler ekleyebilirsiniz ve bunu yapmanın birkaç yolu vardır.
Lucene bunu tersine çevrilmiş indeksleme ile yapar, bu da bir listeyi tuttuğu bir veri yapısı oluşturduğu anlamına gelir.
her kelimenin ait olduğu yer.
Tersine çevrilmiş bir dizin, her kelimenin ait olduğu yerin listesini tutan bir veri yapısıdır.
Örneğin, ters indekslemeyi kullanarak etiketlerine göre işleri aramanız gerekiyorsa, şöyle görünebilir:
masa.
Bu nedenle, Java etiketi olan bir iş arıyorsanız, etikete bakmak yerine dizine bakmak çok daha hızlıdır.
Java kelimesini içerip içermediğini görmek için her işe bakmak.
Bunun nedeni, etiketin bulunduğu yalnızca bir yere bakmanız gerektiğidir.
Bu Java ve ilgili tüm işleri alacaksınız.
Bu işlem hıza çok fazla kazanç sağlar.
Üstelik gerçek dünyada nadiren tek bir kelime ararsınız.
Örneğin, üç kelimelik bir arama olan kıdemli Java geliştiricisi arıyorsanız, çarpma anlamına gelir.
hız kazancınız 3’tür.
Web sitelerinin işveren için incelemeler içeren bir bloga da ev sahipliği yaptığını düşünün.
Bir kullanıcı ilerleme fırsatları ararsa işler zorlaşabilir.
İlerleme fırsatları ile ilgili blog yazılarını, sadece ilerleme fırsatları olanlardan önce nasıl görünmesini sağlarız?
bu kelimeleri içeriyor mu?
Solr ile alaka puanını hesaplamak için birkaç algoritmanız var.
Solr çeşitleri
varsayılan olarak sonuç alaka düzeyine göre belirlenir. Alaka düzeyi puanı, her belgeye atanan bir sayıdır
arama kriterlerinize uygun.
Temel olarak, verilen belgenin arama kriterleriyle ne kadar alakalı olduğunu gösterir.
Örneğin, bir blog gönderisi, diğer blog gönderilerinden daha fazla ilerleme fırsatı kelimesini içeriyorsa,
bununla ilgili olma ihtimali daha yüksek. Varsayılan olarak, bir belge alaka düzeyi puanını hesaplamak için kullanılan algoritma
Bu, frekans-ters belge frekansı terimini temsil eden TF-IDF’dir; bu iki faktör
alaka puanını etkiler.
İlk olarak, frekans teriminin ne hakkında olduğunu görelim. Aradığınız kelime ne kadar çok görünürse
bir belgede, puan o kadar yüksek olur.
Bu, kendi kendini açıklayan ters belge frekansıdır.
Burada her kelimenin ağırlığı daha fazladır.
Kelime diğer belgeler arasında nadirse. Örneğin, birisi bir profil arıyorsa
Geniş bir özgeçmiş koleksiyonunda Kıdemli Solr Mühendisi olarak, belgelerin daha üst sıralarda yer almasını beklemeyiz.
Mühendis kelimesiyle eşleşiyorlarsa. Bunun yerine, en önemli terimlerin daha üst sıralarda yer almasını beklerdik.
Kesinlikle kullanıcı solr bilen birini arıyor ve bu yıldız daha fazla ağırlıkla öne çıkıyor
belge ararken
Bu nedenle, Türkçe dilindeki, için, ve gibi yaygın sözcükler daha düşük puanlar verecektir.
Belirli bir belgede birçok kez görünseler bile. Terim frekansı ve ters belge frekansı
güzel bir denge sağlar. Sıklık terimi, bir belgede birden çok kez görünen terimleri yükseltir
ters belge sıklığı, birçok belgede yaygın olarak görülen terimleri cezalandırır.
Soru 1
Arama sonuçlarının alaka düzeyini hesaplamak için kullanılan Ters Belge Sıklığı (IDF) nasıl çalışır?
Cevap
Kelime diğer belgelerde yaygın değilse, her kelimenin ağırlığı daha yüksektir
Soru 2
Soru 2 Basitçe tanımlanmış, tersine çevrilmiş bir dizin nedir?
Cevap 2
Tersine çevrilmiş bir dizin, her kelimenin ait olduğu yerin bir listesini tutan bir veri yapısıdır.
Bolum 3
Önceki bölümde, Solr’u neden kullanmak isteyebileceğimize dair bazı nedenleri açıkladık.
Ama bunu hafife almayalım ve gerçek bir kullanım örneğini görelim.
Diyelim ki görevimiz, kullanıcıların büyük bir videoda video aramasına yardımcı olan işlevselliği oluşturmak.
İnternet sitesi.
Şimdi, kullanıcının borsadan hisse senedi satın almakla ilgili videolar bulmak istediğini ve arama yaptığını hayal edin.
“hisse satın al” için potansiyel olarak alakalı video başlıkları sol tarafta listelenir.
Diğer tüm video başlıkları alakalı olarak kabul edilmeyecektir. kullanarak bu aramayı uygulamak için saf bir yaklaşım
geleneksel bir SQL veritabanı, kullanıcının girdiği tam metni sorgulamak olacaktır.
Örneğin, Hisse senedi satın almak için başlığın eşit olduğu tüm yanlış videoları seçin.
Bu yaklaşımla ilgili sorun, video kataloğunuzdaki video başlıklarından hiçbirinin kullanıcıların herhangi bir sonuç bulamayacağı anlamına gelen tam sorgu.
Belki de daha bağışlayıcı bir yaklaşım, her bir kelimeyi aramak olacaktır.
Örneğin aşağıdaki sorgu. Bu sorgu, geleneksel bir sorgu için işlenmesi nispeten pahalı olmasına rağmen veritabanı bunun için dizin kullanamadığından en azından bir sonuç üretecektir.
Ardından, eşleşmesi için yalnızca tek bir kelime gerektirerek aramayı kolayca daha esnek hale getirebilirsiniz.
Bunun için aşağıdaki SQL sorgusunu verebilirsiniz. Bu sorgu, şundan çok daha fazla video başlığıyla eşleşir:
önceki sorgu, çünkü bu sorgunun eşleşmesi için anahtar kelimelerden yalnızca en az birini gerektirdi.
Ancak, gördüğünüz gibi, bir yay nasıl bağlanır gibi alakasız videolarla da eşleşti. Özetlemek gerekirse, ilk sorgu herhangi bir sonuç bulamadı.
Tüm kelimelerin eşleşmesini gerektiren ikinci sorgu, birçok alakalı videonun bulunamamasına neden oldu.
ve kelimelerden yalnızca birinin eşleşmesini gerektiren üçüncü sorgu, birçok alakasız videonun görüntülenmesine neden oldu.
de bulundu.
Bu örnekler, geleneksel arama uygulamasıyla ilgili çeşitli zorlukları göstermektedir.
Yalnızca alt dize eşleştirmesi yapabilir ve sözcükleri ayırt edemez, anlamaz
satın alma vs satın alma gibi dilsel çeşitlilik. Kelimelerin eş anlamlılarını anlamayan
satın alma ve satın alma gibi, a, ve, gibi önemsiz sözcükler. Bu, sonuçların eşleşmesini engeller
beklendiği gibi, ya ilgili sonuçları hariç tutarak ya da olup olmadığına bağlı olarak alakasız sonuçları dahil ederek.
kelimelerin tümü veya herhangi biri eşleşmelidir. Ve sonuçlarda herhangi bir alaka düzeyi sıralaması yoktur.
Ayrıca, veritabanının boyutu veya müşteri sayısı arttıkça bu sorgu yavaşlayacaktır.
büyümek. Bunun nedeni, sorgunun kısmi eşleşmeleri bulmak için her video başlığını taraması gerektiğidir.
kelimeleri aramak için bir dizin kullanmak yerine. Solr gibi arama motorları bu tür sorunları çözmede parlıyor.
Solr, metinsel benzerleri belirlemek için içerik ve arama sorgularında metin analizi yapabilir.
kelimeleri anlayın ve eş anlamlıları eşleştirin, a, the ve of gibi önemsiz kelimeleri kaldırın. Ve her sonucu puanla
gelen sorguyla ne kadar iyi eşleştiğine bağlıdır.
En iyi sonuçların önce döndürülmesini ve müşterilerinizin iki işlemi yinelemek zorunda kalmamasını sağlar.
sayfalar bekledikleri içeriği bulmak için.
Solr, tüm bunları, belgeleri eşlemek yerine içeriği belgeye eşleyen bir dizin kullanarak başardı.
geleneksel bir veritabanı modeli olarak içeriğe.
Tersine çevrilmiş dizin, arama motorlarının nasıl çalıştığının merkezinde yer alır.
Bu yazımızda Java programlama diline giriş yapacağız. Simge (Token) tipleri nelerdir ? Method nasıl oluşturulur ? Dilin kuralları (Grammar) , Derlemenin safhaları , Yorum satırları (Comments), Dökümantasyon nedir ve Nerelerde yapmak ya da yapmamak gereklidir? İsimlendirme kuralları nelerdir ? Kod Geleneği nedir ? Sabiteler (Literals) nedir? Bunlardan bahsedeceğiz.
Arkadaslar hepinize selam. Birazdan size java ile nasil kod yazilmaya başlanır ? Nasil java ve IDE kurulur? anlatacağım ve Hep birlikte java ile kod yazmaya başlayabilecegiz…