Apart OP'ın sorguları yanıtlayan gelen, bana bazı bilgiler atalım Apache Solr gelen basit bir giriş için ayrıntılı kurulum ve uygulanması .
Basit Giriş
Yukarıdaki arama motorları veya listede olmayan diğer motorlar ile deneyimi olan herkes - görüşlerinizi duymak isterim.
Solr gerçek zamanlı problemleri çözmek için kullanılmamalıdır. Arama motorları için Solr hemen hemen oyun ve kusursuz çalışıyor .
Solr , Yüksek Trafik web uygulamalarında iyi çalışır ( bunun için uygun olmadığı bir yerde okudum, ancak bu ifadeyi yedekliyorum ). CPU değil RAM kullanır.
- sonuç alaka düzeyi ve sıralama
Boost sonuçlarınızın üst kısmında görünecek rütbe yardımcı olur. Söylesene, bir isim aramak için çalışıyoruz john alanlarına firstname ve lastname ve alaka vermek istediğiniz ad o zaman gerek sahada artırmak yukarı ad gösterildiği gibi sahadan.
http://localhost:8983/solr/collection1/select?q=firstname:john^2&lastname:john
Gördüğünüz gibi, ad alanı 2 puanla artırıldı .
SolrRelevancy hakkında daha fazlası
Hız inanılmaz derecede hızlı ve bundan ödün verilmiyor. Solr'a taşınmamın nedeni .
Dizin oluşturma hızı ile ilgili olarak Solr , veritabanı tablolarınızdan JOINS'i de işleyebilir . Daha yüksek ve karmaşık bir birleşim indeksleme hızını etkiler. Bununla birlikte, muazzam bir RAM yapılandırması bu durumla kolayca başa çıkabilir.
RAM ne kadar yüksek olursa, Solr'un indeksleme hızı o kadar hızlı olur.
- Django ile kullanım kolaylığı ve entegrasyon kolaylığı
Solr ve Django'yu asla entegre etmeye çalışmadı , ancak bunu Haystack ile başarabilirsiniz . Aynı ilginç bazı makaleler buldum ve işte bunun için github .
- kaynak gereksinimleri - site bir VPS'de barındırılacaktır, bu nedenle ideal olarak arama motoru çok fazla RAM ve CPU gerektirmez
Solr RAM üzerinde ürer , bu yüzden RAM yüksekse, Solr hakkında endişelenmenize gerek yoktur .
Solr'ın RAM kullanımı, birkaç milyar kaydınız varsa tam indeksleme işlemine başlar, bu durumla başa çıkmak için Delta ithalatını akıllıca kullanabilirsiniz. Açıklandığı gibi Solr sadece gerçek zamanlıya yakın bir çözümdür .
Solr oldukça ölçeklenebilir. SolrCloud'a bir göz atın . Bazı temel özellikleri.
- Kırıklar (veya kırma, dizinin birden fazla makine arasında dağıtılması konseptidir, dizininizin çok büyüyüp büyüymediğini söyleyin)
- Yük Dengeleme ( Solrj , Solr bulut ile kullanılıyorsa, Round-Robin mekanizmasını kullanarak otomatik olarak yük dengeleme ile ilgilenir)
- Dağıtılmış Arama
- Yüksek kullanılabilirlik
- "Bunu mu demek istediniz?", ilgili aramalar vb. gibi ekstra özellikler
Yukarıdaki senaryo için, Solr ile paketlenmiş SpellCheckComponent'i kullanabilirsiniz . Çok özellik vardır, SnowballPorterFilterFactory kayıtları yazdığınız takdirde, demek almak için yardımcı kitaplar yerine kitabında , sen ile ilgili sonuçlar sunulacaktır kitapta .
Bu cevap genel olarak Apache Solr ve MySQL'e odaklanmaktadır . Django kapsam dışı.
LINUX ortamında olduğunuzu varsayarsak, bu makaleye devam edebilirsiniz. (benimki bir Ubuntu 14.04 versiyonuydu)
Detaylı Kurulum
Başlangıç
İndir apache solr dan burada . Bu sürüm 4.8.1 . Yeni sürümleri indirebilirsiniz, bunu kararlı buldum.
Arşivi indirdikten sonra, seçtiğiniz bir klasöre çıkarın. Söyle .. Downloads
ya da her neyse .. Yani böyle görünecekDownloads/solr-4.8.1/
İstendiğinde .. Dizinin içinde gezinin
shankar@shankar-lenovo: cd Downloads/solr-4.8.1
Şimdi buradasınız ..
shankar@shankar-lenovo: ~/Downloads/solr-4.8.1$
Jetty Uygulama Sunucusunu Başlatma
İskelesolr-4.8.1
dizinin örnekler klasörünün içinde bulunur , bu nedenle o dizinin içinde gezinin ve İskele Uygulama Sunucusunu başlatın.
shankar@shankar-lenovo:~/Downloads/solr-4.8.1/example$ java -jar start.jar
Şimdi terminali kapatmayın, simge durumuna küçültün ve kenara bırakın.
(İPUCU: Jetty Server'ın arka planda çalışmasını sağlamak için & after.jar komutunu kullanın)
Apache Solr'un başarıyla çalışıp çalışmadığını kontrol etmek için tarayıcıda bu URL'yi ziyaret edin. http: // localhost: 8983 / Solr
İskele'yi özel bağlantı noktasında çalıştırma
Varsayılan olarak 8983 numaralı bağlantı noktasında çalışır. Bağlantı noktasını burada veya doğrudan jetty.xml
dosyanın içinde değiştirebilirsiniz .
java -Djetty.port=9091 -jar start.jar
JConnector'ı indirin
Bu JAR dosyası MySQL ve JDBC arasında bir köprü görevi görür , Platformdan Bağımsız Sürüm'ü buradan indirin
İndirdikten sonra klasörü çıkarın ve kopyalayıp lib dizinine mysql-connector-java-5.1.31-bin.jar
yapıştırın .
shankar@shankar-lenovo:~/Downloads/solr-4.8.1/contrib/dataimporthandler/lib
Apache Solr'a bağlanacak MySQL tablosunu oluşturma
Koymak için solr kullanımına, Sen aramak için bazı tablolar ve veri olması gerekir. Bunun için, kullanacağı MySQL rastgele isimler bir tablo oluşturma ve itmek için ve sonra biz kullanabiliriz solr bağlanmak için MySQL ve indeks tablosunun o ve 's girişleri.
1. masa yapısı
CREATE TABLE test_solr_mysql
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NULL,
created TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
2. yukarıdaki tabloyu doldurun
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jean');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jack');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jason');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Vego');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Grunt');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jasper');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Fred');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jenna');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Rebecca');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Roland');
Çekirdeğe girmek ve lib direktiflerini eklemek
1. konumuna gidin
shankar@shankar-lenovo: ~/Downloads/solr-4.8.1/example/solr/collection1/conf
2. solrconfig.xml dosyasını değiştirme
Bu iki yönergeyi bu dosyaya ekleyin.
<lib dir="../../../contrib/dataimporthandler/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-dataimporthandler-\d.*\.jar" />
Şimdi DIH (Veri İçe Aktarma İşleyicisi) ekleyin
<requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler" >
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
3. db-data-config.xml dosyasını oluşturun
Dosya varsa yoksay, bu satırları bu dosyaya ekleyin. İlk satırı görebileceğiniz gibi, MySQL veritabanınızın kimlik bilgilerini sağlamanız gerekir . Veritabanı adı, kullanıcı adı ve şifre.
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/yourdbname" user="dbuser" password="dbpass"/>
<document>
<entity name="test_solr" query="select CONCAT('test_solr-',id) as rid,name from test_solr_mysql WHERE '${dataimporter.request.clean}' != 'false'
OR `created` > '${dataimporter.last_index_time}'" >
<field name="id" column="rid" />
<field name="solr_name" column="name" />
</entity>
</document>
</dataConfig>
(İPUCU: İstediğiniz sayıda öğeye sahip olabilir, ancak kimlik alanına dikkat edin, eğer bunlar aynıysa dizinleme atlanır.)
4. schema.xml dosyasını değiştirin
Bunu gösterildiği gibi schema.xml dosyasına ekleyin .
<uniqueKey>id</uniqueKey>
<field name="solr_name" type="string" indexed="true" stored="true" />
uygulama
indeksleme
Gerçek anlaşma burada. Sen verilerine endekslenmesini yapmanız gereken MySQL için Solr Solr Sorgularının yapmak kullanımına inorder.
Adım 1: Solr Yönetici Paneli'ne gidin
URL Hit : // localhost: 8983 / solr http tarayıcınızda. Ekran böyle açılır.
İşaretçinin belirttiği gibi, yukarıdaki yapılandırmalardan herhangi birinin hatalara yol açıp açmadığını kontrol etmek için Günlük kaydı başlığına gidin .
2. Adım: Günlüklerinizi Kontrol Edin
Tamam şimdi buradasınız, yapabileceğiniz gibi çok sayıda sarı mesaj var (UYARILAR). Kırmızı ile işaretlenmiş hata mesajlarınızın olmadığından emin olun. Daha önce, bizim konfigürasyonumuza db-data-config.xml dosyasına bir seçme sorgusu ekledik , diyelim ki bu sorguda herhangi bir hata olsaydı, burada görünecekti.
Güzel, hata yok. Gitmeye hazırız. En seçeyim koleksiyon1'i gösterildiği gibi listeden seçin Dataimport
Adım 3: DIH (Veri İçe Aktarma İşleyicisi)
DIH kullanarak, bağlanma olacak MySQL dan Solr yapılandırma dosyası aracılığıyla db-veri-config.xml gelen Solr arayüzü ve üzerine dizine alır veritabanından 10 kayıtları almak Solr .
Bunu yapmak için Tam içe aktarmayı seçin ve Temizle ve Tamamla seçeneklerini işaretleyin . Şimdi Yürüt'ü tıklayın gösterildiği gibi .
Alternatif olarak, bunun gibi doğrudan bir tam içe aktarma sorgusu da kullanabilirsiniz.
http://localhost:8983/solr/collection1/dataimport?command=full-import&commit=true
Tıkladığınız sonra yürütme , Solr herhangi bir hata olup olmadığını, bu derdi, kayıtları endeksine başlar Dizin Başarısız ve geri dönmek zorunda Günlüğü gitti yanlış ne var görmek için bölüm.
Bu yapılandırmada herhangi bir hata olmadığı ve dizin oluşturma başarıyla tamamlandıysa, bu bildirimi alırsınız.
Adım 4: Solr Sorgularını Çalıştırma
Her şey yolunda gidiyor gibi görünüyor, şimdi endekslenen verileri sorgulamak için Solr Sorguları kullanabilirsiniz . Soldaki Sorgu'ya tıklayın ve ardından Yürüt'e basın altındaki düğmeye.
Dizinlenmiş kayıtları gösterildiği gibi göreceksiniz.
Tüm kayıtları listelemek için karşılık gelen Solr sorgusu
http://localhost:8983/solr/collection1/select?q=*:*&wt=json&indent=true
Endeksli 10 kaydın hepsi var. Diyelim ki, sadece Ja ile başlayan isimlere ihtiyacımız var , bu durumda sütun adını hedeflemeniz gerekir solr_name
, bu nedenle sorgunuz böyle gider.
http://localhost:8983/solr/collection1/select?q=solr_name:Ja*&wt=json&indent=true
Solr Sorgularını böyle yazarsınız . Bu konuda daha fazla okumak için, Bu güzel makaleye göz atın .