Pergunta

Nós temos uma aplicação web que permite aos usuários fazer upload de documentos, criar os seus próprios documentos, e assim por diante. arquivos enviados são armazenados no Amazon S3, informação criada é armazenada em um banco de dados MySQL. O que eu estou procurando é algum tipo de mecanismo de busca, onde eu alimentá-lo todos os nossos documentos de texto, cada um com um ID único, e isso cria um índice ou o que quer. Mais tarde, eu posso dar-lhe consultas de pesquisa, e ele vai puxar os melhores documentos correspondentes (através de seu ID), juntamente com trechos de texto correspondente.

Basicamente queremos permitir que nossos usuários pesquisar através de seu repositório de materiais enviados, juntamente com tudo o que outros usuários tenham marcado como público. A solução deve ser executado em um servidor Linux standard, e, idealmente, seria open source, mas eu também vou considerar soluções pagas se eles não são escandalosamente razoáveis.

Até agora, eu encontrei três candidatos potenciais:

  1. MySQL pesquisa de texto completo - alguns relatórios Eu li são que é muito lento
  2. Apache Lucene - infelizmente escrito em Java, mas eu vou usar -lo se for preciso. Supostamente rápido
  3. Esfinge - não parece ser tão popular, idealmente qualquer solução que eu encontro terá lotes de comunidade de suporte.

Por favor, deixe-me saber se existem outras opções boas que eu tenha esquecido, ou se você tem experiência com qualquer um dos acima.

Foi útil?

Solução

Dê uma olhada Solr . É baseado em Lucene, por isso é muito rápido, e é muito fácil de usar a partir de qualquer plataforma.

Outras dicas

Esfinge pode valer a pena sua consideração, como ele funciona bem com vários RDMS comuns (nomeadamente MySQL)

Há também Xapian que é rápido e é bastante personalizável.

Tem suporte para indexadores personalizado permitindo um para dados de índice que não está armazenado em um banco de dados que pode ser útil para os seus documentos armazenados no S3.

Eu imagino que Google terá uma solução que atenda às suas necessidades. Comece por aqui: do Google Enterprise

Há uma porta rubi de Lucene chamado de " Ferret ". Além da API Ruby, você pode começar a implementação c subjacente chamado "cFerret".

Lucene é muito bom. E embora ele foi originalmente escrito em java há uma aplicação php http: / /framework.zend.com/manual/en/zend.search.lucene.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top