Escolhendo um servidor de pesquisa de texto completo independente: Sphinx ou SOLR? [fechadas]

192

Estou procurando um servidor de pesquisa de texto completo independente com as seguintes propriedades:

  • Deve operar como um servidor independente que possa atender a solicitações de pesquisa de vários clientes
  • Deve ser capaz de fazer a "indexação em massa" indexando o resultado de uma consulta SQL: diga "SELECT id, text_to_index FROM documents;"
  • Deve ser um software livre e deve ser executado no Linux com o MySQL como banco de dados
  • Deve ser rápido (exclui a pesquisa interna de texto completo do MySQL)

As alternativas que encontrei com essas propriedades são:

  • Solr (baseado em Lucene)
  • ElasticSearch (também baseado em Lucene)
  • Esfinge

Minhas perguntas:

  • Como eles se comparam?
  • Perdi alguma alternativa?
  • Eu sei que cada caso de uso é diferente, mas existem certos casos em que eu definitivamente não gostaria de usar um determinado pacote?
knorv
fonte
1
Você descartou o uso de Lucene direto? O Solr é um serviço em cima do lucene; portanto, o Lucene direto pode ser uma possibilidade.
1660 Dave Dave
O Lucene tem um modo de servidor independente? Eu pensei que era uma das coisas que SOLR adicionou? Eu não descartam qualquer coisa - tão à vontade para defender Lucene se essa é a melhor escolha dadas as exigências :-)
knorv
mausch: Principalmente Java, mas também outras linguagens.
knorv
Pessoalmente, gosto de Sphinx. No entanto, durante um projeto "grande" recentemente, o candidato a lançamento mais recente (0.9.9-rc2) apresentou erros de interrupção ao usar matrizes de valores múltiplos (MVA). Seria resultados aleatórios! Então, mudamos para o SOLR para contornar isso. Uma vez que o SOLR estava em funcionamento, o desempenho estava bom e sem o bug de interrupção do programa.
Pchap10k
2
Você já viu o elasticsearch.com?
FYA

Respostas:

327

Uso o Solr com sucesso há quase 2 anos e nunca usei o Sphinx, por isso sou obviamente tendencioso. No entanto, tentarei manter o objetivo citando os documentos ou outras pessoas. Também levarei remendos para a minha resposta :-)

Semelhanças:

  • O Solr e o Sphinx atendem a todos os seus requisitos. Eles são rápidos e projetados para indexar e pesquisar grandes quantidades de dados com eficiência.
  • Ambos têm uma longa lista de sites de alto tráfego usando-os ( Solr , Sphinx )
  • Ambos oferecem suporte comercial. ( Solr , Esfinge )
  • Ambos oferecem ligações à API do 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:

Perguntas relacionadas:

Mauricio Scheffer
fonte
4
Falando sobre os desenvolvedores comprometidos com Solr e Lucene, parece que eles fundiram os dois produtos, tornando o desenvolvimento mais fácil e rápido - lucidimagination.com/blog/2010/03/26/… .
21711 jimmystormig
3
@ Stan: como assim? Eu uso o Solr há quase 5 anos e nunca precisei escrever uma única linha de Java.
Mauricio Scheffer
@MauricioScheffer Você realmente acha que o código java será mais rápido que o C ++. Aqui está a comparação feita por Bill Karwin e Sphinx, que consultam as coisas 10 vezes mais rápido que o lucene (e o solr deve ser ainda mais lento que o). Slideshare.net/billkarwin/…
Stann
3
@ Stan: você realmente acha que precisa de mais desempenho do que whitehouse.gov, Netflix, The Guardian, digg, apenas para citar alguns sites que usam Solr? wiki.apache.org/solr/PublicServers
Mauricio Scheffer
3
Aqui está uma resposta sobre Esfinge que é um bom par para esta resposta em Solr
Nova Alexandria
48

A menos que você precise estender a funcionalidade de pesquisa de maneira proprietária, o Sphinx é sua melhor aposta.

Vantagens da esfinge:

  1. O desenvolvimento e a configuração são mais rápidos
  2. Agregação muito melhor (e mais rápida). Este foi o recurso matador para nós.
  3. Não é XML. Isso é o que acabou descartando Solr para nós. Tivemos que retornar conjuntos de resultados bastante grandes (pense em centenas de resultados) e depois agregá-los, já que faltava a agregação do Solr. A quantidade de tempo para serializar de e para XML simplesmente matou o desempenho. Porém, para pequenos conjuntos de resultados, estava perfeitamente bem.
  4. Melhor documentação que eu já vi em um aplicativo de código aberto

Solr vantagens:

  1. Pode ser extendido.
  2. É possível acessá-lo diretamente de um aplicativo Web, ou seja, é possível que pesquisas semelhantes ao preenchimento automático atinjam o servidor Solr diretamente via AJAX.
larf311
fonte
29
Solr tem muitas outras que xml, incluindo JSON, PHP, Ruby, Python e um formato binário java escritores de resposta: lucene.apache.org/solr/api/org/apache/solr/request/...
Mauricio Scheffer
24
Mencionei quão terrível é a documentação do Solr / Lucene? Ter que percorrer Javadocs para descobrir a funcionalidade não é minha idéia de documentação.
Larf311 17/08/09
3
Eu deveria ter ligado ao wiki: wiki.apache.org/solr/…
Mauricio Scheffer
2
Passo o dia inteiro consertando algum bug de instalação do sphinx 0.9.9 no meu mac. Até agora, ainda não está funcionando. É tão buggy. Eu usei muitas maneiras sugeridas. Eu estou desistindo Realmente frustrante ... #
24711 lkahtz
A documentação do solr não é tão boa quanto a esfinge. mas a comunidade é grande. E sempre posso descobrir tudo lendo o código fonte do solr.
Tyler Longo
21

Nota: Existem muitos usuários com a mesma pergunta em mente.

Então, para responder ao ponto:

Qual e por quê?

  • Use o Solr se você pretende usá-lo em seu aplicativo Web (mecanismo de pesquisa de sites de exemplo). Definitivamente, será ótimo, graças à sua API. Você definitivamente precisará desse poder para um aplicativo da web.

  • Use o Sphinx se você quiser pesquisar toneladas de documentos / arquivos rapidamente. Ele indexa muito rápido também. Eu recomendaria não usá-lo em um aplicativo que envolva JSON ou analise XML para obter os resultados da pesquisa. Use-o para pesquisas diretas em dB. Funciona muito bem no MySQL.

Alternativas

Embora estes sejam os gigantes, há muito mais. Além disso, existem aqueles que os utilizam para alimentar suas estruturas personalizadas. Então, eu diria que você realmente não perdeu nada. Embora exista uma pesquisa elástica que tenha uma boa base de usuários.

Augiwan
fonte
13
naquele momento embaraçoso em que li essa resposta depois de um ano e meio, clique em upvote e vi que eu mesmo escrevi essa resposta. ri muito. : DA: pequena adição a isso: após 18 meses, a elasticsearch se tornou uma ótima alternativa e também possui uma comunidade decente. Legal, bonsai legal!
Augiwan
Augusto! Aquele momento embaraçoso: D. Então, para um aplicativo web python, o que você acha melhor agora? Pesquisa solr ou elástica com base no desempenho, uso de memória e facilidade para configurar alguma ideia?
Mevin Babu
Não importa em que idioma o aplicativo Web está escrito. Escolha com base no seu caso de uso!
Augiwan
19

Estou usando o Sphinx há quase um ano, e tem sido incrível. Posso indexar 1,5 milhão de documentos em cerca de um minuto no meu MacBook e ainda mais rápido no servidor. Também estou usando o Sphinx para limitar pesquisas a locais dentro de latitudes e longitudes específicas, e é muito rápido. Além disso, a forma como os resultados são classificados é muito ajustável. Fácil de instalar e configurar, se você ler um tutorial ou dois. Quase com status 1.0, mas seus Candidatos a Liberação têm sido sólidos.

lo_fye
fonte
3
Pesquisa geográfica pode ser feito em Solr com o plugin LocalSolr: gissearch.com/localsolr
Mauricio Scheffer
1
você pode indexar 1,5 milhão de documentos em um minuto? Eu não posso nem chegar perto de ler tantos arquivos - diretamente do 7zip (sem gravar, enviar para o console) arquivos no meu SSD! E é 2017! Que tipo de documentos são esses? Isso é incrível. Nota: espero que você não tenha procurado o índice de 1,5 milhão em um minuto. As pesquisas de um índice com 1,5 milhão de documentos ainda devem retornar em segundos (mesmo em 2009).
FastAl
2

Lucene / Solr parece ser mais destacado e com mais anos de negócios e uma comunidade de usuários muito mais forte. imho se você pode superar os problemas de configuração inicial, como alguns parecem ter enfrentado (não nós), então eu diria que Lucene / Solr é sua melhor aposta.

Angsuman Chakraborty
fonte
A comunidade de usuários é um ponto importante. Existem algumas pessoas MUITO, MUITO ÚTEIS nos fóruns da Sphinx, mas de outra forma não existe uma comunidade forte.
precisa