Jag har använt Solr framgångsrikt i nästan 2 år nu och har aldrig använt Sphinx, så jag är uppenbarligen partisk. Jag ska dock försöka hålla det objektivt genom att citera dokumenten eller andra personer. Jag ska också ta lappar till mitt svar :-)
Likheter:
- Både Solr och Sphinx uppfyller alla dina krav. De är snabba och utformade för att effektivt indexera och söka i stora mängder data.
- Båda har en lång lista med webbplatser med hög trafik som använder dem (Solr , Sphinx )
- Båda erbjuder kommersiell support. (Solr , Sfinx )
- Båda erbjuder klient-API-bindningar för flera plattformar/språk (Sphinx , Solr )
- Båda kan distribueras för att öka hastigheten och kapaciteten (Sphinx , Solr )
Här är några skillnader:
- Solr, som är ett Apache-projekt, är uppenbarligen Apache2-licensierat. Sphinx är GPLv2 . Detta innebär att om du någonsin behöver bädda in eller utöka (inte bara "använda") Sphinx i en kommersiell applikation, måste du köpa en kommersiell licens (motivering )
- Solr är lätt att bädda in i Java-applikationer.
- Solr är byggt ovanpå Lucene, som är en beprövad teknik över 8 år gammal med en enorm användarbas (detta är bara en liten del). Närhelst Lucene får en ny funktion eller snabbare, får Solr det också. Många av de utvecklare som satsar på Solr är också Lucene-kommittare.
- Sphinx integreras tätare med RDBMS, särskilt MySQL.
- Solr kan integreras med Hadoop för att bygga distribuerade applikationer
- Solr kan integreras med Nutch för att snabbt bygga en helt flerårig webbsökmotor med sökrobot .
- Solr kan indexera proprietära format som Microsoft Word, PDF, etc . Sphinx kan inte .
- Solr levereras med en stavningskontroll direkt ur kartongen .
- Solr kommer med facetstöd direkt från förpackningen . Facetering i Sphinx kräver mer arbete .
- Sphinx tillåter inte partiella indexuppdateringar för fältdata .
- I Sphinx måste alla dokument-ID vara unika osignerade heltal som inte är noll siffror . Solr kräver inte ens en unik nyckel för många operationer , och unika nycklar kan vara antingen heltal eller strängar.
- Solr stöder fältkollapsning (för närvarande endast som en extra patch) för att undvika duplicering av liknande resultat. Sphinx verkar inte tillhandahålla någon sådan här funktion.
- Medan Sphinx är utformad för att endast hämta dokument-ID , i Solr kan du direkt få hela dokument med i stort sett vilken typ av data som helst, vilket gör det mer oberoende av extern datalagring och det sparar extra tur och retur.
- Solr, förutom när den används inbäddad, körs i en Java-webbbehållare
som Tomcat eller Jetty, som kräver ytterligare specifik konfiguration och inställning
(eller så kan du använda den medföljande brygga
och starta den med
java -jar start.jar
). Sphinx har ingen ytterligare konfiguration.
Relaterade frågor: