La scelta di un server di ricerca full-text stand-alone: Sphinx o SOLR? [chiuso]
-
18-09-2019 - |
Domanda
Sto cercando un server di ricerca full-text stand-alone con le seguenti proprietà:
- deve operare come un server stand-alone che può servire richieste di ricerca provenienti da più client
- Deve essere in grado di fare "l'indicizzazione rinfusa" indicizzando il risultato di una query SQL: dire "SELECT id, text_to_index da documenti;"
- Deve essere software libero 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 (sulla base di Lucene)
- elasticsearch (anche sulla base di Lucene)
- Sphinx
Le mie domande:
- Come si confronta?
- Ho perso alternative?
- So che ogni caso d'uso è diverso, ma ci sono alcuni casi in cui avrei sicuramente non vuole utilizzare un determinato pacchetto?
Soluzione
Ho usato Solr con successo per quasi 2 anni ormai, e non ho mai usato Sfinge, quindi sono ovviamente di parte. Tuttavia, cercherò di tenerlo obiettivo citando i documenti o altre persone. Sarò anche prendere patch per la mia risposta: -)
Somiglianze:
- Sia Solr e la Sfinge soddisfare tutte le vostre esigenze. Sono veloci e progettato per indicizzare e cercare grandi corpi di dati in modo efficiente.
- Entrambi hanno una lunga lista di siti ad alto traffico che li utilizzano ( Solr , Sfinge )
- Entrambi offrono supporto commerciale. ( Solr , Sfinge )
- Entrambi offrono attacchi API client per diverse piattaforme / lingue ( Sfinge , Solr )
- Entrambi possono essere distribuiti per aumentare la velocità e la capacità ( Sfinge , Solr )
Qui ci sono alcune differenze:
- Solr, essendo un progetto Apache, è ovviamente Apache2-licenza. Sfinge è GPLv2 . Questo significa che se mai hai bisogno di incorporare o estendere (non solo "uso") Sfinge in un'applicazione commerciale, dovrete acquistare una licenza commerciale ( logica )
- facilmente integrabile nelle applicazioni Java.
- Solr è costruito sulla base di Lucene, che è una tecnologia collaudata su 8 anni con un enorme base di utenti ( questa è solo una piccola parte). Ogni volta che Lucene ottiene una nuova funzione o di aumento di velocità, Solr ottiene troppo. Molti degli sviluppatori impegnano a Solr sono anche committer Lucene.
- Sfinge si integra più strettamente con RDBMS, in particolare MySQL.
- integrato con Hadoop per costruire applicazioni distribuite
- Nutch di costruire rapidamente un motore di ricerca a tutti gli effetti con cingolato .
- indice formati proprietari come Microsoft Word, PDF, ecc . Sfinge non può .
- Solr è dotato di una spell-checker, fuori dalla scatola .
- sostegno sfaccettatura fuori dalla scatola . Sfaccettatura in Sfinge href="http://api-meal.eu/memo/128-faceted-search-with-sphinx-and-php/" richiede più lavoro .
- Sfinge non consente aggiornamenti parziali di indice per i dati campo .
- Nella Sfinge, alids l documenti devono essere unici senza segno diverso da zero numeri interi . Solr non ha nemmeno bisogno di una chiave unica per molte operazioni e chiavi univoche possono essere sia interi o stringhe.
- campo collasso (attualmente come una patch aggiuntivo solo) al fine di evitare la duplicazione di risultati simili. Sfinge non sembra fornire qualsiasi funzione come questo.
- Sfinge è progettato per recuperare unico documento ids , in Solr è possibile ottenere direttamente interi documenti con praticamente qualsiasi tipo di dati, il che rende più indipendente da qualsiasi archivio di dati esterni e salva l'andata e ritorno in più.
- Solr, tranne quando viene utilizzato incorporato, viene eseguito in un web container Java come Tomcat o Jetty , che richiedono ulteriore configurazione e messa a punto specifica (oppure è possibile utilizzare il incluso Jetty e basta lanciarlo con
java -jar start.jar
). Sphinx ha alcuna configurazione aggiuntiva.
Domande correlate:
Altri suggerimenti
A meno che non è necessario estendere la funzionalità di ricerca in alcun modo proprietaria, Sfinge è la soluzione migliore.
vantaggi Sphinx:
- lo sviluppo e la messa a punto è più veloce
- molto meglio (e più veloce) di aggregazione. Questa è stata la funzione di killer per noi.
- Non XML. Questo è ciò che in ultima analisi ha escluso Solr per noi. Abbiamo dovuto tornare piuttosto grandi insiemi di risultati (si pensi centinaia di risultati) e poi aggregare noi stessi in quanto Solr aggregazione mancava. La quantità di tempo per serializzare da e verso XML solo prestazioni assolutamente ucciso. Per i piccoli risultati imposta, però, era perfettamente soddisfacente.
- Best documentazione che ho visto in un app open source
Solr vantaggi:
- Può essere esteso.
- può colpire direttamente da una web app, vale a dire, è possibile avere le ricerche di completamento automatico-come ha colpito il server Solr direttamente tramite la tecnologia AJAX.
Nota: Non ci sono molti utenti con la stessa domanda in mente
.Quindi, per rispondere al punto:
Quali e perché?
-
Usa Solr se si intende utilizzare nel vostro web-app (ad esempio in loco dei motori di ricerca). Sarà sicuramente rivelarsi grande, grazie alla sua API. Avrete sicuramente bisogno che il potere per un web-app.
-
Usa Sphinx se si desidera effettuare la ricerca attraverso tonnellate di documenti / file reale veloce. indici reale veloce. Suggerirei di non usarlo in un app che coinvolge JSON o XML parsing per ottenere i risultati di ricerca. Usalo per ricerche dirette dB. E le grandi opere su MySQL.
Alternative
Anche se questi sono i giganti, ci sono molti di più. Inoltre, ci sono quelli che utilizzano questi per alimentare i loro quadri personalizzati. Quindi, direi che davvero non hanno perso qualsiasi. Anche se v'è una elasticsearch che ha una buona base di utenti.
Sono stato utilizzando Sfinge per quasi un anno ormai, ed è stato fantastico. Posso indice di 1,5 milioni di documenti in circa un minuto sul mio MacBook, e ancora più veloce sul server. Sono anche utilizzando Sfinge per limitare le ricerche ai posti all'interno specifici latitudini e longitudini, ed è molto veloce. Inoltre, come i risultati sono classificati è molto tweakable. Facile da installare e messa a punto, se si legge un tutorial o due. Quasi 1.0 Stato, ma i loro candidati di uscita sono stati roccia solida.
Lucene / Solr sembra essere più funzionalità e più anni di attività e di una comunità di utenti molto più forte. imho se è possibile superare i problemi di installazione iniziali come alcuni sembra aver affrontato (non abbiamo) allora direi Lucene / Solr è la soluzione migliore.