Escolhendo um servidor de pesquisa de texto completo stand-alone: ??Sphinx ou SOLR? [fechadas]
-
18-09-2019 - |
Pergunta
Eu estou procurando um servidor de pesquisa de texto completo stand-alone com as seguintes propriedades:
- Deve funcionar como um servidor stand-alone que pode servir solicitações de pesquisa de vários clientes
- Deve ser capaz de fazer "indexação granel", indexando o resultado de uma consulta SQL: dizer "SELECT id, text_to_index a partir de documentos";
- Deve ser software livre e deve ser executado em Linux com o MySQL como banco de dados
- Deve ser rápido (exclui pesquisa de texto completo interna do MySQL)
As alternativas que eu encontrei que têm estas propriedades são:
- Solr (baseado em Lucene)
- ElasticSearch (também baseado em Lucene)
- Esfinge
As minhas perguntas:
- Como eles se comparam?
- que eu perdi alguma alternativa?
- Eu sei que cada caso de uso é diferente, mas há certos casos em que eu definitivamente não deseja usar um determinado pacote?
Solução
Estou usando Solr com sucesso por quase 2 anos agora, e nunca usou Esfinge, então estou obviamente tendenciosa. No entanto, vou tentar mantê-lo objetivo por citar os docs ou outras pessoas. Eu também vou tomar patches para a minha resposta: -)
Semelhanças:
- Ambos Solr ea Esfinge satisfazer todas as suas necessidades. Eles são rápidos e projetado para indexar e pesquisar grandes massas de dados de forma eficiente.
- Ambos têm uma longa lista de sites de alto tráfego de usá-los ( Solr , Esfinge )
- Ambos oferecem suporte comercial. ( Solr , Esfinge )
- Ambos oferecem cliente ligações API para várias plataformas / linguagens ( Esfinge , Solr )
- Ambos podem ser distribuído para aumentar a velocidade ea capacidade ( Esfinge , Solr )
Aqui estão algumas diferenças:
- Solr, sendo um projeto Apache, é, obviamente, Apache2-licenciado. Esfinge é GPLv2 . Isto significa que se você precisar de incorporar ou se estendem (e não apenas "utilização") Sphinx em uma aplicação comercial, você vai ter que comprar uma licença comercial ( lógica )
- facilmente embutido em aplicações Java.
- Solr é construído em cima de Lucene, que é uma tecnologia comprovada ao longo 8 anos velho com um enorme base de usuários ( esta é apenas uma pequena parte). Sempre que Lucene recebe um novo recurso ou aceleração, Solr recebe-lo também. Muitos dos devs comprometendo-se a Solr também são committers Lucene.
- integra Sphinx mais firmemente com RDBMSs, especialmente MySQL.
- Solr pode ser href="http://highscalability.com/how-rackspace-now-uses-mapreduce-and-hadoop-query-terabytes-data" integrado com Hadoop para construir aplicações distribuídas
- Solr pode ser integrado com Nutch para construir rapidamente um motor de busca web de pleno direito com rastreador .
- índice formatos proprietários como o Microsoft Word, PDF, etc . Sphinx não pode .
- Solr vem com um corretor ortográfico fora da caixa .
- Solr vem com faceta suporte out of the box . Faceting em Esfinge dá mais trabalho .
- não Esfinge não permite atualizações de índice parciais para de dados de campo.
- Na Esfinge, alids l documento deve ser sem assinatura números inteiros únicos diferentes de zero . Solr nem sequer exigem uma chave única para muitas operações e chaves únicas podem ser tanto números inteiros ou strings.
- colapso (actualmente apenas como um remendo adicional) para evitar a duplicação de resultados semelhantes. não Esfinge não parecem fornecer qualquer recurso como este.
- Esfinge é projetado para recuperar somente documento ids , em Solr você pode obter diretamente documentos inteiros com praticamente qualquer tipo de dados, tornando-a mais independente de qualquer armazenamento de dados externo e salva a ida e volta extra.
- Solr, exceto quando usado incorporado, é executado em um Java container web como Tomcat ou Jetty , que exigem configuração e ajuste específico adicional (ou você pode usar o incluído Jetty e apenas lançá-lo com
java -jar start.jar
). Esfinge não tem nenhuma configuração adicional.
Perguntas relacionadas:
Outras dicas
A menos que você precisa estender a funcionalidade de pesquisa de qualquer forma proprietária, Esfinge é sua melhor aposta.
vantagens Esfinge:
- Desenvolvimento e instalação é mais rápido
- Muito melhor (e mais rápido) agregação. Esta foi a característica do assassino para nós.
- Não XML. Isso é o que finalmente descartada Solr para nós. Tivemos que voltar um pouco grandes conjuntos de resultados (pense centenas de resultados) e, em seguida, agregá-los nós mesmos desde Solr agregação faltava. A quantidade de tempo para serializar de e para XML apenas o desempenho absolutamente morto. Para conjuntos de resultados pequenos, porém, ele estava perfeitamente bem.
- Melhor documentação que já vi em um aplicativo de código aberto
vantagens Solr:
- Pode ser estendido.
- pode batê-lo directamente a partir de uma aplicação web, ou seja, você pode ter autocomplete-like pesquisas acertar o servidor Solr diretamente via AJAX.
Nota:. Há muitos usuários com a mesma pergunta em mente
Assim, para responder ao ponto:
Qual e por quê?
-
Use Solr se você pretende usá-lo em seu web-app (site-exemplo do motor de busca). Ele vai certamente vir a ser grande, graças à sua API. Você vai precisar que o poder para um web-app.
-
Use Esfinge se você quiser pesquisar através de toneladas de documentos / arquivos rápida real. Ele indexa muito rápido também. Eu recomendaria não usá-lo em um aplicativo que envolve JSON ou XML parsing para obter os resultados da pesquisa. Usá-lo para pesquisas dB diretos. Ele funciona muito bem em MySQL.
Alternativas
Embora estes sejam os gigantes, há muito mais. Além disso, há aqueles que usá-los para alimentar os seus quadros personalizados. Então, eu diria que você realmente não ter perdido qualquer. Embora não haja um ElasticSearch que tem uma boa base de usuários.
Eu tenho usado o Sphinx por quase um ano agora, e isso tem sido incrível. Posso índice de 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 Esfinge para limitar as pesquisas para lugares dentro de latitudes e longitudes específicos, e é muito rápido. Além disso, como os resultados são classificados é muito tweakable. Fácil de instalar e configurar, se você ler um tutorial ou dois. Quase 1,0 status, mas os seus Release Candidates foram rocha sólida.
Lucene / Solr parece ser mais destaque e com mais anos de actividade e uma comunidade de usuários muito mais forte. imho se você pode obter passado as questões de configuração inicial como alguns parece ter enfrentado (não nós), então eu diria Lucene / Solr é sua melhor aposta.