Różnica między solr i lucene

163

Wiem, że Lucene i Solr to dwa różne projekty Apache, które są stworzone do współpracy, ale nie rozumiem, jaki jest cel każdego projektu.

Do tej pory rozumiałem, że Lucene służy do tworzenia indeksu wyszukiwania, a Solr używa tego indeksu do przeprowadzania wyszukiwań. Mam rację, czy jest to zupełnie inne podejście?

darkheir
źródło
5
Czy lucene.apache.org/solr (i odpowiednik strony Lucene) nie odpowiada na to?
NPE
Tak, masz rację, strona z funkcjami solr wyjaśnia różnicę. Si Jeśli rozumiem, mógłbym używać samej Lucene, ale Solr potrzebuje Lucene do pracy.
darkheir
2
W przeciwieństwie do Lucene, Solr jest aplikacją internetową (WAR), którą można wdrożyć w dowolnym kontenerze serwletów, np. Jetty, Tomcat, Resin itp. Solr może być instalowany i używany przez osoby nie będące programistami. Lucene nie może. Więcej na lucenetutorial.com/lucene-vs-solr.html
Lucky

Odpowiedzi:

229

@darkheir: Lucene i Solr to dwa różne projekty Apache, które są stworzone do współpracy, nie rozumiem, jaki jest cel każdego projektu.

1) Solr używa Lucene pod maską. Lucene nie ma pojęcia o API Solr.

2) Lucene to potężna struktura wyszukiwarki, która pozwala nam dodawać funkcje wyszukiwania do naszej aplikacji. Udostępnia łatwy w użyciu interfejs API, ukrywając wszystkie złożone operacje związane z wyszukiwaniem. Każda aplikacja może korzystać z tej biblioteki, nie tylko Solr.

3) Solr jest zbudowany wokół Lucene. To nie jest tylko wrapper http wokół Lucene, ale wiadomo, że dodaje więcej arsenału do Lucene . Solr jest gotowy do użycia po wyjęciu z pudełka. Jest to aplikacja internetowa, która oferuje powiązaną infrastrukturę i wiele innych funkcji oprócz tego, co oferuje Lucene.

@darkheir: Lucene służy do tworzenia indeksu wyszukiwania, a Solr używa tego indeksu do wyszukiwania. Mam rację, czy jest to zupełnie inne podejście?

4) Lucene nie tylko tworzy Indeks zużycia przez Solr . Lucene obsługuje wszystkie operacje związane z wyszukiwaniem. Każda aplikacja może korzystać z frameworka Lucene.

Przykładami są Solr, Elastic Search, LinkedIn (tak, pod maską) itp.

Przeczytaj ten artykuł: Lucene vs Solr

UPDATE (18.06.14)

Kiedy stosować Lucene?

  • Jesteś inżynierem wyszukiwarek ORAZ
  • Jesteś programistą AND
  • Chcesz mieć pełną kontrolę nad prawie wszystkimi elementami wewnętrznymi Lucene AND
  • Twoje wymagania wymagają robienia wszelkiego rodzaju geekicznych dostosowań do Lucene AND
  • Chcesz zadbać o elementy infrastruktury wyszukiwania, takie jak skalowanie, dystrybucja itp.

Kiedy używać Solr?

  • Przynajmniej jedno z powyższych nie miało sensu. LUB
  • Chcesz czegoś, co jest gotowe do użycia zaraz po wyjęciu z pudełka (nawet bez znajomości języka Java) LUB
  • Twoje wymagania dotyczące infrastruktury przewyższają wymagania dotyczące dostosowania wyszukiwania.

UWAGA : Nie mam na myśli, że Solr jest trudny do dostosowania. Solr jest bardzo elastyczny i zapewnia wiele podłączanych punktów API, co pozwala na wrzucenie kodu.

Są ludzie, którzy należą do obozu „ trzeba używać Lucene ”, ale nadal wolą Solr od zwykłego Lucene, ponieważ jest łatwy w użyciu. Jednak nigdy nie powstrzymują się przed maksymalnym dostosowywaniem Solr.

BTW, widzę, że jest więcej zasobów na Solr (4.x) niż Lucene (4.x).

phanin
źródło
31

Lucene to niskopoziomowa biblioteka Java (z portami do .NET itp.), Która implementuje indeksowanie, analizowanie, wyszukiwanie itp.

Solr to samodzielny, wstępnie skonfigurowany produkt / aplikacja internetowa korzystająca z Lucene. Jeśli wolisz korzystać z HTTP API zamiast Java API, Solr jest dla Ciebie. Solr ma również kilka dodatkowych funkcji (np. Grupowanie ).

mindas
źródło
21

Prostym sposobem konceptualizacji relacji między Solr i Lucene jest samochód i jego silnik. Nie możesz prowadzić silnika, ale możesz prowadzić samochód. Podobnie Lucene jest biblioteką programistyczną, z której nie można korzystać w takiej postaci, w jakiej jest, natomiast Solr to kompletna aplikacja, z której można korzystać od razu.

Źródło: Lucene-vs-solr - samouczek Lucene

Vikas Kumar
źródło
5
Który jest kopiowany i wklejany ze strony lucenetutorial.com/lucene-vs-solr.html Proszę podać źródło za każdym razem, gdy kopiujesz wklej odpowiedź, cytując źródło. ;)
Lucky
1
Strona wydaje się być teraz offline.
dev_feed,
15

Solr jest zbudowany na lucene, aby zapewnić platformę wyszukiwania.

Platforma wyszukiwania w następujących warstwach od dołu do góry:

  • Dane
    • Cel: reprezentowanie różnych typów i źródeł danych
  • Tworzenie dokumentów
    • Cel: Zbuduj informacje o dokumencie do indeksowania
  • Indeksowanie i wyszukiwanie
    • Cel: Zbuduj indeks dokumentu i odpytuj
  • Poprawa logiki
    • Cel: Dodatkowa logika przetwarzania zapytań wyszukiwania i wyników
  • Usługa platformy wyszukiwania
    • Cel: Dodanie dodatkowych funkcjonalności rdzenia wyszukiwarki, aby zapewnić platformę usługową.
  • Aplikacja UI
    • Cel: Interfejs lub aplikacje wyszukiwania użytkownika końcowego

stos solr

Artykuł referencyjny: Wyszukiwanie korporacyjne

mingxue
źródło
12

SOLR jest opakowaniem na indeks Lucene.

Łatwo to zrozumieć: SOLR to samochód, a Lucene to jego silnik . Musisz tylko wiedzieć, jak prowadzić samochód (SOLR), a także wiedzieć kilka rzeczy o silniku (Lucene) na wypadek, gdyby wystąpił problem z silnikiem twojego samochodu.

Życzymy bezpiecznej jazdy :)

Behzad Qureshi
źródło
3
Nie wspominając już o tym, że gdybyś miał taką skłonność, mógłbyś zbudować własny samochód z silnikiem Lucene.
podpowiedź
1

Można to sobie wyobrazić w następujący sposób - Apache Lucene jest biblioteką używaną wewnętrznie przez Apache Solr. Jest napisany w języku Java i zapewnia niesamowite możliwości wyszukiwania pełnotekstowego i indeksowania. Potrafi analizować wiele języków z całego świata i przygotowywać tekst w tych językach do wydajnego i szybkiego wyszukiwania i analizy. Lucene to biblioteka - możesz jej użyć bezpośrednio w swojej aplikacji i zaimplementować wszystko samodzielnie, ale Apache Solr zapewnia wiele po wyjęciu z pudełka.

Wyszukiwarka Apache Solr zapewnia takie funkcje, jak interfejsy API HTTP, których można użyć do wysyłania do nich danych, a następnie wyszukiwania tych danych. Możesz sterować wyszukiwarkami za pomocą API, tworzyć rozproszone środowiska i automatycznie dystrybuować dane do wielu węzłów i wielu, wielu innych.

Rafał
źródło