Category: Search & Recommendation

Apache Solr Notlarım

Post.jar ile windowsta döküman indexleme:
java -Dc=istenenCoreAdı -jar post.jar .\example\*.xml
Indexleme aracı post.jar, http üzerinden core veya collection’un /update pathine curl isteği göndererek iş yapar. Post.jar’da input için default olarak ayarlanmış 3 tip vardır. Xml, json ve csv. Eğer bir pdf veya doc dosyası indexlenmek istenirse Apache Tika tool’u kullanılmalıdır.

Select parametreleri:
Örnek Adres: http://localhost:8983/solr/techproducts/select?q=video

  • fl: field. Sonuçlarda hangi fieldın gözükeceğini belirtmek istediğinizde bu parametre ile veriyorsunuz. fl=name,features gibi bir yazım ile birden fazla alanın gözükmesini sağlayabilirsiniz.
  • q: query. Aranan kelimedir. Örnek indexte herhangi bir alanda video kelimesi aranabilir durumdadır. field belirtilmezse tüm alanlarda (schema.xml’de öyle yapılandırılmış olmalı) arama yapacaktır. Name alanında da video ile eşleşse, id alanında da video ile eşleşse bu kayıtları response ile getirecektir. Ayrıca q içinde field da belirtebilirsiniz.
    Örneğin: http://localhost:8983/solr/techproducts/select?q=name:Apple
    q=price:[0 TO 400]&fl=id,name,price
    bu şekilde bir kullanım ile price alanına aralık verebilirsiniz
  • facet=true&facet.field=cat
    Facet Solr’ın temel özelliklerinden biridir. Facet ile sonuçlar üzerinde gruplama, kategorilendirme, sınıflandırma yapılabilir. İçeriğe göre çok farklı nitelikleri yakalayarak gruplama yapabilirsiniz. Sadece alanlara bağlı değil, içeriğe bağlı da çalışıyor olması ve çok yüksek hızlarda çalışıyor olması büyük avantajlar sağlamaktadır. Facet =true ile gelen sonuçlarda facet özelliğini kullanılabilir yapıyoruz. Basit örneğimiz için facet.field ile de gruplama yapılacak alanı belirtiyoruz. Aşağıdaki ilk adresteki gibi bir sorgu gönderdiğimizde sonuçlar üzerinde, category alanına ilişkin kullanılabilir category alanlarının sayısı gözükmektedir. Burada sadece facet alanı tanımlaması ve temel işlem olan sayıya göre gruplama yaptık.
    Facet’in daha bir çok parametresi / özelliği bulunduğundan bu category sayılarını daha farklı şekillerde kullanabilme imkanına sahibiz. Mesela ikinci adresteki gibi fq=cat:software ile filter query‘i sadece software categorysinde olacak şekilde yapılandırabiliriz. Sonuçlarda price 200 400 arasında olan, software kategorisindeki kayıtların id, name, price alanları gözükecektir.

    1. http://localhost:8983/solr/techproducts/select?q=price:%5B200 TO 400]& fl=id,name,price & facet=true& facet.field=cat
    2. http://localhost:8983/solr/techproducts/select?q=price:%5B0%20TO%20400%5D&fl=id,cat,name,price&facet=true&facet.field=cat&fq=cat:software
  • qt: Request Handler. İstekleri /select pathi üzerinden gönderebilmemiz için kullanılır. Standalone’da bir collection üzerinden istek göndeririz. Fakat cloudda nodelardan birine isteği göndermemiz gereken durumlar olabilir. Bunun için core/collection altındaki /select path’i ile select sorgu isteklerini handle edebiliriz.
  • sort: Select sorgusu ile gelen sonuçları ascending descending sıralamaya olanak sağlar. Örneğin: price desc yazdığımızda fiyatı azalan sırada listeleyecektir. inStock desc, price asc yazarak da birden fazla sorting parameter belirtebiliriz. Temel olarak sort işlemi bunlarla yapılabilir fakat sum(x,y ) desc gibi bir yazım ile de sorting query parametresi verilebilirmiş. Ben kullanmadım.
  • start: /select sorgusu ile gelen sonuçlarda, eşleşen dökümanlardan baştan kaçıncıdan itibaren göstermesini istiyorsak start a belirtmemiz gerekir. Örneğin 30 sonuç gelen bir sorguda start:10 dersek, 10. kayıttan başlayarak dökümanları listeler.
  • rows: Eşleşen dökümanlardan kaç adedinin gözükeceği belirtilir.
  • wt: gelen sonucun gösterim formatını belirler. Xml, json, python, php, ruby, csv olabilir.
  • indent: okunabilir formatta gösterim sağlar