Bu, önceki makalenin devamı niteliğindeki bir makaledir. Sorgunun nasıl hassaslaştırılacağını, farklı parametrelerle daha karmaşık arama kriterlerinin nasıl formüle edileceğini ve Apache Solr sorgu sayfasının farklı web formlarını nasıl anlayacağınızı ele alacağız. Ayrıca, XML, CSV ve JSON gibi farklı çıktı biçimlerini kullanarak arama sonucunun nasıl sonradan işleneceğini tartışacağız.
Apache Solr'u sorgulama
Apache Solr, arka planda çalışan bir web uygulaması ve hizmeti olarak tasarlanmıştır. Sonuç olarak, herhangi bir istemci uygulaması Solr'a sorgular göndererek (bu makalenin odak noktası), dizinlenmiş verileri ekleyerek, güncelleyerek ve silerek ve temel verileri optimize ederek belge çekirdeğini değiştirerek iletişim kurabilir. İki seçenek vardır - pano/web arayüzü aracılığıyla veya ilgili bir istek göndererek bir API kullanarak.
kullanımı yaygındır ilk seçenek düzenli erişim için değil, test amaçlı. Aşağıdaki şekil, web tarayıcısı Firefox'taki farklı sorgu formları ile Apache Solr Yönetim Kullanıcı Arabirimindeki Gösterge Tablosunu göstermektedir.
İlk olarak, çekirdek seçim alanının altındaki menüden “Sorgu” menü girişini seçin. Ardından, gösterge panosu aşağıdaki gibi birkaç giriş alanı görüntüler:
- İstek işleyicisi (qt):
Solr'a ne tür bir istek göndermek istediğinizi tanımlayın. Varsayılan istek işleyicileri olan "/select" (dizine alınmış verileri sorgula), "/update" (dizine alınmış verileri güncelle) ve "/delete" (belirtilen dizine alınmış verileri kaldır) veya kendi kendine tanımlanmış bir istek işleyicisi arasından seçim yapabilirsiniz. - Sorgu olayı (q):
Hangi alan adlarının ve değerlerinin seçileceğini tanımlayın. - Filtre sorguları (fq):
Belge puanını etkilemeden iade edilebilecek belgelerin üst kümesini kısıtlayın. - Sıralama düzeni (sıralama):
Sorgu sonuçlarının sıralama düzenini artan veya azalan olarak tanımlayın - Çıktı penceresi (başlangıç ve satırlar):
Çıktıyı belirtilen öğelerle sınırlayın - Alan listesi (fl):
Bir sorgu yanıtında yer alan bilgileri belirli bir alan listesiyle sınırlar. - Çıktı formatı (ağırlık):
İstenen çıktı biçimini tanımlayın. Varsayılan değer JSON'dur.
Sorguyu Yürüt düğmesine tıklamak istenen isteği çalıştırır. Pratik örnekler için aşağıya bir göz atın.
olarak ikinci seçenek, bir API kullanarak bir istek gönderebilirsiniz. Bu, herhangi bir uygulama tarafından Apache Solr'a gönderilebilen bir HTTP isteğidir. Solr, isteği işler ve bir yanıt döndürür. Bunun özel bir durumu, Java API aracılığıyla Apache Solr'a bağlanmaktır. Bu, HTTP bağlantısı gerektirmeyen bir Java API olan SolrJ [7] adlı ayrı bir projeye dış kaynaklı olarak verilmiştir.
Sorgu sözdizimi
Sorgu sözdizimi en iyi [3] ve [5]'te açıklanmıştır. Farklı parametre adları, yukarıda açıklanan formlardaki giriş alanlarının adlarına doğrudan karşılık gelir. Aşağıdaki tablo bunları ve pratik örnekleri listeler.
Sorgu Parametreleri Dizini
Parametre | Açıklama | Misal |
---|---|---|
q | Apache Solr'un ana sorgu parametresi - alan adları ve değerleri. Benzerlik puanları, bu parametredeki terimlere göre belgelenir. | Kimlik: 5 arabalar:*adilla* *:X5 |
fq | Sonuç kümesini, örneğin İşlev Aralığı Sorgu Ayrıştırıcı aracılığıyla tanımlanan filtreyle eşleşen üst küme belgeleriyle sınırlayın | model kimlik, model |
Başlat | Sayfa sonuçları için ofsetler (başlangıç). Bu parametrenin varsayılan değeri 0'dır. | 5 |
satırlar | Sayfa sonuçları için ofsetler (son). Bu parametrenin değeri varsayılan olarak 10'dur | 15 |
çeşit | Sorgu sonuçlarının sıralanacağı, virgülle ayrılmış alanların listesini belirtir | artan model |
fl | Sonuç kümesindeki tüm belgeler için döndürülecek alanların listesini belirtir | model kimlik, model |
ağırlık | Bu parametre, sonucu görüntülemek istediğimiz yanıt yazıcısının türünü temsil eder. Bunun değeri varsayılan olarak JSON'dur. | json xml |
Aramalar, q parametresindeki sorgu dizesi ile HTTP GET isteği ile yapılır. Aşağıdaki örnekler bunun nasıl çalıştığını netleştirecektir. Kullanımda, sorguyu yerel olarak kurulan Solr'a göndermek için curl.
- Tüm veri kümelerini çekirdek araba kıvrımından alın http://localhost:8983/solr/cars/query?q=*:*
- 5 curl kimliğine sahip çekirdek arabalardan tüm veri kümelerini alın http://localhost:8983/solr/cars/query?q=id:5
- Çekirdek arabaların tüm veri kümelerinden alan modelini alın
Seçenek 1 (kaçan & ile): curl http://localhost:8983/solr/cars/query?q=id:*\&fl=modelSeçenek 2 (tek işaretli sorgu):
curl 'http://localhost:8983/solr/cars/query?q=id:*&fl=model' - Fiyata göre azalan düzende sıralanmış çekirdek arabaların tüm veri kümelerini alın ve yalnızca marka, model ve fiyat alanlarının çıktısını alın (tek işaretli sürüm): curl http://localhost:8983/solr/cars/query -d '
q=*:*&
sıralama=fiyat açıklaması&
fl=marka,model,fiyat ' - Fiyata göre azalan düzende sıralanmış çekirdek arabaların ilk beş veri kümesini alın ve yalnızca marka, model ve fiyat alanlarının çıktısını alın (tek işaretli sürüm): curl http://localhost:8983/solr/cars/query - d'
q=*:*&
satırlar=5&
sıralama=fiyat açıklaması&
fl=marka,model,fiyat ' - Fiyata göre azalan düzende sıralanmış çekirdek otomobillerin ilk beş veri kümesini alın ve yalnızca alan, marka, model ve fiyat artı alaka puanı (tek işaretli sürüm) çıktısını alın: curl http://localhost:8983/solr/ arabalar/sorgu -d '
q=*:*&
satırlar=5&
sıralama=fiyat açıklaması&
fl=marka,model,fiyat,puan ' - İlgililik puanının yanı sıra depolanan tüm alanları döndürün: curl http://localhost:8983/solr/cars/query -d '
q=*:*&
fl=*,puan '
Ayrıca, hangi bilgilerin döndürüleceğini kontrol etmek için isteğe bağlı istek parametrelerini sorgu ayrıştırıcısına göndermek için kendi istek işleyicinizi tanımlayabilirsiniz.
Sorgu Ayrıştırıcıları
Apache Solr, arama dizenizi arama motoru için belirli talimatlara çeviren bir bileşen olan sorgu ayrıştırıcısı kullanır. Aradığınız belge ile aranızda bir sorgu ayrıştırıcı durur.
Solr, gönderilen bir sorgunun işlenme biçiminde farklılık gösteren çeşitli ayrıştırıcı türleri ile birlikte gelir. Standart Sorgu Ayrıştırıcı, yapılandırılmış sorgular için iyi çalışır ancak sözdizimi hatalarına karşı daha az toleranslıdır. Aynı zamanda, hem DisMax hem de Genişletilmiş DisMax Sorgu Ayrıştırıcı, doğal dil benzeri sorgular için optimize edilmiştir. Kullanıcılar tarafından girilen basit ifadeleri işlemek ve farklı ağırlıklar kullanarak çeşitli alanlarda tek tek terimleri aramak için tasarlanmıştır.
Ayrıca Solr, belirli bir uygunluk puanı oluşturmak için bir işlevin bir sorguyla birleştirilmesine izin veren İşlev Sorguları da sunar. Bu ayrıştırıcılar, İşlev Sorgu Ayrıştırıcı ve İşlev Aralığı Sorgu Ayrıştırıcı olarak adlandırılır. Aşağıdaki örnek, 318'den 323'e kadar olan modellerle “bmw” (marka veri alanında saklanan) için tüm veri setlerini seçen sonuncuyu göstermektedir:
curl http://localhost:8983/solr/cars/query -d 'q=yapım: bmw&
fq=model:[318 - 323] '
Sonuçların sonradan işlenmesi
Apache Solr'a sorgu göndermek bir kısımdır, ancak diğerinden gelen arama sonucunu sonradan işleme tabi tutar. İlk olarak, JSON'dan XML'e, CSV'ye ve basitleştirilmiş bir Ruby biçimine kadar farklı yanıt biçimleri arasından seçim yapabilirsiniz. Bir sorguda karşılık gelen wt parametresini belirtmeniz yeterlidir. Aşağıdaki kod örneği, kaçışlı & ile curl kullanan tüm öğeler için veri kümesini CSV biçiminde almak için bunu gösterir:
curl http://localhost:8983/solr/cars/query?q=id:5\&wt=csvÇıktı, aşağıdaki gibi virgülle ayrılmış bir listedir:
Sonucu XML verisi olarak almak, ancak iki çıktı alanı yapmak ve modellemek için yalnızca aşağıdaki sorguyu çalıştırın:
curl http://localhost:8983/solr/cars/query?q=*:*\&fl=yapım,model\&wt=xmlÇıktı farklıdır ve hem yanıt başlığını hem de gerçek yanıtı içerir:
Wget, alınan verileri stdout'ta basitçe yazdırır. Bu, standart komut satırı araçlarını kullanarak yanıtı sonradan işlemenize olanak tanır. Birkaçını listelemek gerekirse, bu, JSON için jq [9], XML için xsltproc, xidel, xmlstarlet [10] ve CSV formatı için csvkit [11] içerir.
Sonuç
Bu makale, Apache Solr'a sorgu göndermenin farklı yollarını gösterir ve arama sonucunun nasıl işleneceğini açıklar. Bir sonraki bölümde, ilişkisel bir veritabanı yönetim sistemi olan PostgreSQL'de arama yapmak için Apache Solr'ı nasıl kullanacağınızı öğreneceksiniz.
Yazarlar hakkında
Jacqui Kabeta çevreci, hevesli bir araştırmacı, eğitmen ve akıl hocasıdır. Birkaç Afrika ülkesinde BT endüstrisinde ve STK ortamlarında çalıştı.
Frank Hofmann bir BT geliştiricisi, eğitmeni ve yazarıdır ve Berlin, Cenevre ve Cape Town'da çalışmayı tercih eder. dpmb'den edinilebilen Debian Paket Yönetim Kitabının ortak yazarı.kuruluş
Bağlantılar ve Referanslar
- [1] Apache Solr, https://lucene.apache.kuruluş/solr/
- [2] Frank Hofmann ve Jacqui Kabeta: Apache Solr'a Giriş. 1. Bölüm, http://linuxhint.com
- [3] Yonik Seelay: Solr Sorgu Sözdizimi, http://yonik.com/solr/sorgu-sözdizimi/
- [4] Yonik Seelay: Solr Eğitimi, http://yonik.com/solr-öğretici/
- [5] Apache Solr: Veri Sorgulama, Tutorialspoint, https://www.eğitim noktası.com/apache_solr/apache_solr_querying_data.htm
- [6] Lucene, https://lucene.apache.kuruluş/
- [7] SolrJ, https://lucene.apache.org/solr/guide/8_8/using-solrj.html
- [8] kıvrılma, https://kıvrılma.se/
- [9] jq, https://github.com/stedolan/jq
- [10] xmlstarlet, http://xmlstar.kaynak forge.ağ/
- [11] csvkit, https://csvkit.Belgeleri oku.io/tr/en son/