Estou usando o Solr com sucesso há quase 2 anos e nunca usei o Sphinx, então sou obviamente tendencioso. No entanto, tentarei mantê-lo objetivo citando os documentos ou outras pessoas. Eu também vou levar patches para minha resposta :-)
Semelhanças:
- Tanto o Solr quanto o Sphinx atendem a todos os seus requisitos. Eles são rápidos e projetados para indexar e pesquisar grandes volumes de dados com eficiência.
- Ambos têm uma longa lista de sites de alto tráfego que os utilizam (Solr , Esfinge )
- Ambos oferecem suporte comercial. (Solr , Esfinge )
- Ambos oferecem vinculações de API de cliente para várias plataformas/idiomas (Sphinx , Solr )
- Ambos podem ser distribuídos para aumentar a velocidade e a capacidade (Sphinx , Solr )
Aqui estão algumas diferenças:
- O Solr, sendo um projeto Apache, é obviamente licenciado pelo Apache2. Sphinx é GPLv2 . Isso significa que, se você precisar incorporar ou estender (não apenas "usar") o Sphinx em um aplicativo comercial, terá que comprar uma licença comercial (razão )
- O Solr é facilmente incorporável em aplicativos Java.
- O Solr foi desenvolvido com base no Lucene, que é uma tecnologia comprovada em 8 anos com um enorme base de usuários (esta é apenas uma pequena parte). Sempre que o Lucene recebe um novo recurso ou aceleração, o Solr também o recebe. Muitos dos desenvolvedores comprometidos com o Solr também são committers do Lucene.
- O Sphinx integra-se melhor com RDBMSs, especialmente MySQL.
- O Solr pode ser integrado ao Hadoop para construir aplicativos distribuídos
- O Solr pode ser integrado ao Nutch para criar rapidamente um mecanismo de pesquisa da web desenvolvido com rastreador .
- O Solr pode indexar formatos proprietários como Microsoft Word, PDF, etc . Esfinge não pode .
- O Solr vem com um corretor ortográfico pronto para uso .
- O Solr vem com suporte de faceta pronto para uso . Facetar no Sphinx requer mais trabalho .
- Sphinx não permite atualizações parciais de índice para dados de campo .
- No Sphinx, todos os IDs de documentos devem ser um número inteiro diferente de zero não assinado e exclusivo números . Solr nem exige uma chave exclusiva para muitas operações , e as chaves exclusivas podem ser números inteiros ou strings.
- O Solr suporta recolhimento de campo (atualmente apenas como um patch adicional) para evitar duplicar resultados semelhantes. O Sphinx parece não fornecer nenhum recurso como esse.
- Enquanto Sphinx foi projetado para recuperar apenas IDs de documentos , no Solr você pode obter documentos inteiros diretamente com praticamente qualquer tipo de dados, tornando-o mais independente de qualquer armazenamento de dados externo e economizando a viagem de ida e volta extra.
- O Solr, exceto quando usado incorporado, é executado em um contêiner da Web Java
como Tomcat ou Jetty, que requerem configuração e ajuste específicos adicionais
(ou você pode usar o incluído Jetty
e apenas inicie-o com
java -jar start.jar
). O Sphinx não tem configuração adicional.
Perguntas relacionadas:
- Pesquisa de texto completo com Rails
- Comparação do mecanismo de pesquisa de texto completo - Lucene, Sphinx, Postgresql, MySQL?