Scelta di un server di ricerca full-text autonomo: Sphinx o SOLR? [chiuso]


192

Sto cercando un server di ricerca full-text autonomo con le seguenti proprietà:

  • Deve funzionare come server autonomo in grado di servire richieste di ricerca da più client
  • Deve essere in grado di eseguire "indicizzazione in blocco" indicizzando il risultato di una query SQL: dire "SELECT id, text_to_index FROM documenti;"
  • Deve essere un software gratuito e deve essere eseguito su Linux con MySQL come database
  • Deve essere veloce (esclude la ricerca full-text interna di MySQL)

Le alternative che ho trovato che hanno queste proprietà sono:

  • Solr (basato su Lucene)
  • ElasticSearch (anche basato su Lucene)
  • Sfinge

Le mie domande:

  • Come si confrontano?
  • Ho perso qualche alternativa?
  • So che ogni caso d'uso è diverso, ma ci sono alcuni casi in cui avrei sicuramente non vuole usare un certo pacchetto?

1
Hai escluso di usare direttamente Lucene? Solr è un servizio al di sopra di lucene, quindi Lucene potrebbe essere una possibilità.
Dave,

Lucene ha una modalità server autonoma? Ho pensato che fosse una delle cose aggiunte da SOLR? Non ho escluso nulla - quindi sentiti libero di sostenere Lucene se questa è la scelta migliore dati i requisiti :-)
knorv

mausch: principalmente Java ma anche altre lingue.
Knorv,

Personalmente mi piace la Sfinge. Tuttavia, durante un progetto "di grandi dimensioni" di recente, l'ultimo candidato alla release (0.9.9-rc2) ha mostrato bug di arresto durante l'utilizzo di array multi-valore (MVA). Sarebbe risultati casuali! Quindi ci siamo trasferiti a SOLR per aggirare il problema. Una volta che SOLR era attivo e funzionante, le prestazioni andavano bene e senza il bug dello stopper dello spettacolo.
pchap10k,

2
Hai visto elasticsearch.com?
FYA

Risposte:


327

Uso Solr con successo da quasi 2 anni ormai, e non ho mai usato Sphinx, quindi ovviamente sono di parte. Tuttavia, proverò a mantenerlo obiettivo citando i documenti o altre persone. Prenderò anche delle patch per la mia risposta :-)

Analogie:

  • Sia Solr che Sphinx soddisfano tutte le vostre esigenze. Sono veloci e progettati per indicizzare e cercare in modo efficiente grandi quantità di dati.
  • Entrambi hanno un lungo elenco di siti ad alto traffico che li utilizzano ( Solr , Sphinx )
  • Entrambi offrono supporto commerciale. ( Solr , Sfinge )
  • Entrambi offrono collegamenti API client per diverse piattaforme / lingue ( Sphinx , Solr )
  • Entrambi possono essere distribuiti per aumentare la velocità e la capacità ( Sphinx , Solr )

Ecco alcune differenze:

Domande correlate:


4
Parlando di sviluppatori che si impegnano sia con Solr che con Lucene, sembra che abbiano unito i due prodotti per facilitare e velocizzare ulteriormente lo sviluppo - lucidimagination.com/blog/2010/03/26/… .
Jimmystormig,

3
@Stann: come mai? Ho usato Solr per quasi 5 anni fa e non ho mai avuto bisogno di scrivere una sola riga di Java.
Mauricio Scheffer,

@MauricioScheffer Pensi davvero che il codice java sarà più veloce del C ++. Ecco il confronto fatto da Bill Karwin e Sphinx: interroga le cose 10 volte più velocemente di lucene (e il solr deve essere persino più lento di.) Slideshare.net/billkarwin/…
Stann

3
@Stann: pensi davvero di aver bisogno di più prestazioni di whitehouse.gov, Netflix, The Guardian, digg, solo per citarne alcuni siti web usando Solr? wiki.apache.org/solr/PublicServers
Mauricio Scheffer,

3
Ecco una risposta su Sfinge che è una buona coppia per questa risposta su Solr
New Alexandria,

48

A meno che non sia necessario estendere la funzionalità di ricerca in modo proprietario, Sphinx è la soluzione migliore.

Vantaggi della Sfinge:

  1. Lo sviluppo e l'installazione sono più veloci
  2. Aggregazione molto migliore (e più veloce). Questa è stata la caratteristica killer per noi.
  3. Non XML. Questo è ciò che alla fine ha escluso Solr per noi. Abbiamo dovuto restituire set di risultati piuttosto grandi (pensate a centinaia di risultati) e poi aggregarli da soli poiché mancava l'aggregazione Solr. La quantità di tempo per serializzare da e verso XML ha semplicemente annullato le prestazioni. Per piccoli insiemi di risultati, però, andava perfettamente bene.
  4. La migliore documentazione che ho visto in un'app open source

Vantaggi Solr:

  1. Può essere esteso.
  2. Puoi colpirlo direttamente da un'app Web, ad esempio, puoi fare in modo che ricerche simili al completamento automatico colpiscano il server Solr direttamente tramite AJAX.

29
Solr ha molti writer di risposta diversi da xml, tra cui JSON, PHP, Ruby, Python e un formato binario java: lucene.apache.org/solr/api/org/apache/solr/request/…
Mauricio Scheffer

24
Ho già detto quanto sia terribile la documentazione Solr / Lucene? Dover fare il root su Javadocs per capire la funzionalità non è la mia idea di documentazione.
larf311,

3
Avrei dovuto collegarmi al wiki: wiki.apache.org/solr/…
Mauricio Scheffer,

2
Passo tutto il giorno a correggere alcuni bug di installazione di sfinge 0.9.9 sul mio mac. Finora non funziona ancora. È così pieno di bug. Ho usato molto i modi suggeriti. Mi sto arrendendo Davvero frustrante ...
lkahtz,

la documentazione di solr non è buona come la sfinge. ma la comunità è grande. E riesco sempre a capire tutto leggendo il codice sorgente di solr.
Tyler Long

21

Nota: ci sono molti utenti con la stessa domanda in mente.

Quindi, per rispondere al punto:

Quale e perché?

  • Usa Solr se intendi utilizzarlo nella tua app web (motore di ricerca del sito di esempio). Si rivelerà sicuramente eccezionale, grazie alla sua API. Avrai sicuramente bisogno di quel potere per un'app web.

  • Usa Sphinx se vuoi cercare tra tonnellate di documenti / file molto velocemente. Si indicizza anche molto velocemente. Consiglierei di non usarlo in un'app che coinvolge JSON o l'analisi di XML per ottenere i risultati della ricerca. Usalo per ricerche dB dirette. Funziona benissimo su MySQL.

alternative

Sebbene questi siano i giganti, ce ne sono molti di più. Inoltre, ci sono quelli che li usano per alimentare i loro framework personalizzati. Quindi, direi che davvero non te ne sei perso nessuno. Sebbene esista una ricerca elastica con una buona base di utenti.


13
quel momento imbarazzante in cui ho letto questa risposta dopo un anno e mezzo e ho fatto clic su vota e vedo che ho scritto questa risposta da solo. lol. : DA piccola aggiunta a questo però: dopo 18 mesi, elasticsearch si è rivelata un'ottima alternativa e ha anche una comunità decente. Fantastico, fantastico bonsai!
Augiwan,

Augusto! Quel momento imbarazzante: D. Quindi per un'app Web Python quale pensi sia la migliore adesso? Ricerca solr o elastica basata su prestazioni, utilizzo della memoria e facilità di impostazione delle idee?
Mevin Babu

Non importa in quale lingua è scritta l'app Web. Scegli in base al tuo caso d'uso!
Augiwan,

19

Uso Sphinx da quasi un anno ed è stato fantastico. Posso indicizzare 1,5 milioni di documenti in circa un minuto sul mio MacBook e ancora più velocemente sul server. Sto anche usando Sphinx per limitare le ricerche a luoghi entro determinate latitudini e longitudini, ed è molto veloce. Inoltre, il modo in cui i risultati sono classificati è molto modificabile. Facile da installare e configurare, se leggi un tutorial o due. Quasi lo stato 1.0, ma i loro candidati al rilascio sono stati solidi.


3
La ricerca geografica può essere effettuata in Solr con il plug-in LocalSolr
Mauricio Scheffer,

1
puoi INDICE 1,5 milioni di documenti in un minuto? Non riesco nemmeno ad avvicinarmi alla LETTURA di così tanti - direttamente dai file 7zip (non scrivendo, in uscita sulla console) sul mio SSD! Ed è il 2017! Che tipo di documenti sono questi? È piuttosto incredibile. Nota: spero che non intendessi cercare l'indice di 1,5 milioni in un minuto. Le ricerche di un indice con 1,5 milioni di documenti dovrebbero comunque tornare in pochi secondi (anche nel 2009).
FastAl,

2

Lucene / Solr sembra essere più in primo piano e con anni di attività più lunghi e una comunità di utenti molto più forte. imho se riesci a superare i problemi di installazione iniziale come alcuni sembrano aver affrontato (non noi), direi che Lucene / Solr è la soluzione migliore.


La comunità di utenti è un punto importante. Ci sono un paio di persone MOLTO, MOLTO utili nei forum Sphinx, ma altrimenti non c'è una forte comunità.
mlissner,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.