Qual é o melhor aplicativo de pesquisa Django? [fechadas]

110

Estou construindo um projeto Django que precisa da funcionalidade de pesquisa e, até que haja um django.contrib.search, tenho que escolher um aplicativo de pesquisa. Então, qual é o melhor? Por "melhor" quero dizer ...

  • fácil de instalar / configurar
  • tem uma API compatível com Django ou pelo menos Python
  • pode realizar pesquisas razoavelmente complexas

Aqui estão alguns aplicativos dos quais já ouvi falar. Sugira outros se você souber de algum:

Eu também gostaria de evitar o uso de um mecanismo de pesquisa de terceiros (como o Google SiteSearch), porque alguns dos dados que eu gostaria de indexar são apenas para membros do site e não devem ser públicos.

Justin Voss
fonte
Normalmente coisas como "melhor" são bastante subjetivas, mas django realmente tem um "melhor" aplicativo de busca como mostra a resposta aceita.
A menos que eu não entenda totalmente django, este ainda é um pedido de biblioteca e, portanto, fora do tópico.
Jeffrey Bosboom

Respostas:

104

Confira Haystack Search - uma nova camada de abstração de pesquisa baseada em modelo que atualmente suporta Xapian , Solr e Whoosh . Parece que está bem suportado e documentado.

kpw
fonte
3
Haystack está em desenvolvimento ativo e o autor está sempre disponível através da lista de e-mail.
Tom,
2
Do projeto djangosearch: "Este projeto não está mais em desenvolvimento ativo. Se você estiver procurando por um aplicativo de pesquisa de texto completo django que funcione com vários mecanismos de pesquisa, verifique o palheiro. Se estiver procurando por algo específico para Solr, você pode quero experimentar o solango. "
Esteban Feldman
Haystack tem sido mal suportado por algum tempo. Eu recomendo que você evite isso neste momento. Talvez eles consertem no futuro, mas agora está em um lugar ruim.
Aaron Schif
Eu concordo, a última versão do haystack (2.1) não está funcionando de forma alguma com a minha versão python 2.7 do django 1.4.
Chris Hawkes de
19

Justin, eu tentaria djangosearch primeiro: Jacob Kaplan-Moss (desenvolvedor líder do Django) está trabalhando nisso.

Riscos potenciais:

  • A página inicial avisa que a API pode não estar totalmente estável

Benefícios potenciais:

  • “O objetivo de longo prazo é que isso se torne django.contrib.search.”
Garth Kidd
fonte
45
A página agora diz "Este projeto não está mais em desenvolvimento ativo. Se você estiver procurando por um aplicativo de pesquisa de texto completo django que funcione com vários mecanismos de pesquisa, dê uma olhada no Haystack."
Tomas Andrle
18

Estou procurando a mesma coisa, assim como muitas outras pessoas. Esperamos que django.contrib.search seja adicionado em breve.

Entretanto, isto é o que descobri:

Para mim, a maioria parece bastante complicada e, francamente, um pouco difícil de implementar. Eu estaria interessado em saber o que você pensa sobre isso.

Davidhund
fonte
9

A página de código do google para djangosearch indica que ele não está mais em desenvolvimento ativo e sugere palheiro ou solango .

Joe Germuska
fonte
2
Solango diz que não está mais em desenvolvimento e recomenda o uso do Haystack.
Rory,
8

Eu recomendaria o Sphinx para pesquisa e agregação de texto completo, e o django-sphinx é bom o suficiente para uso em produção. Descobrimos que o Sphinx era a maneira menos intensiva de recursos e mais rápida de indexar e pesquisar nossos documentos e que o django-sphinx era um ótimo wrapper no cliente sphinx.

O grupo por agregação é particularmente interessante se, por exemplo, você deseja exibir quantos documentos com uma determinada marca ou por um determinado autor (ou ambos) corresponderam a uma pesquisa. As atualizações de atributos na memória também eram convenientes, especialmente para remover artigos excluídos imediatamente.

Joe W.
fonte
6

Obrigado Garth. Eu tinha visto que o djangosearch queria se tornar a busca oficial do Django, mas estava hesitante em usá-lo porque não consegui encontrar nenhuma documentação! Felizmente, há um README no subversion que eu não tinha visto antes e faz com que a API pareça muito legal:

# set up the model
class Event(models.Model):
    title = models.CharField(max_length=255)
    date = models.DateField()
    is_outdoors = models.BooleanField()

    index = djangosearch.ModelIndex(text=['title'], 
                                    additional=['date', 'is_outdoors'])

# run a search
results = Event.index.search("django conference")
Justin Voss
fonte
6

Eu só precisava de uma solução muito rápida e sem complicações para um aplicativo interno.

Achei o artigo Adicionando pesquisa ao Django em um piscar de olhos , e funcionou esplêndido para mim!

Obviamente, ele não tem a velocidade, escalabilidade e recursos dos projetos reais como o Haystack, mas este é mais fácil de configurar e eu realmente não preciso de nada mais do que a palavra-chave AND-search.

odinho - Velmont
fonte
2

Parece que todos aqui sentiram saudades django-xappy

Após uma rápida avaliação de todos os complementos de pesquisa existentes para Django, achei este o mais flexível e fácil de usar. É difícil em alguns lugares, mas ainda é a melhor maneira de usar o poder do mecanismo de busca Xapian dentro de projetos Django.

vvarp
fonte
2

Você pode querer dar uma olhada no Django Solr search (também conhecido como "Solango") que vem com uma boa documentação para você começar ...

ahagenbruch
fonte
1

Se você tem uma grande quantidade de dados a serem indexados ou espera alto tráfego, sugiro usar algum mecanismo de busca externo, como o Solr . Dessa forma, você manterá a abordagem de nada compartilhado e poderá dimensionar os componentes do seu site de forma independente.

zgoda
fonte
1

Acho que vou ter que dar um grito para Djapian.

É sólido como uma rocha ... basta puxar para baixo uma distribuição de origem e dar uma olhada dentro. Código de primeira linha, não muitos comentários, embora ..

Ainda é um projeto de software jovem, mas acho que a comunidade django deveria dar seu peso a este.


fonte
0

Obrigado Joe,

Decidimos usar o Tsearch2 e um adaptador postgres personalizado. Tsearch2 não precisa de um processo extra para rodar, o que foi conveniente já que estamos em uma hospedagem WebFaction com memória limitada ... Ainda não está completamente pronto, mas parece ser uma boa solução ...

Davidhund
fonte
0

Eu descobri o Djoosh, que depende do motor de busca externo puro-python Whoosh para funcionar bem com meu cérebro 'Python'.


fonte
0

Se você estiver disposto a usar um mecanismo de pesquisa de terceiros, posso recomendar o Yahoo BOSS e o django-bosssearch .

O Yahoo BOSS é um serviço pago, mas economiza a configuração e manutenção de outro software de pesquisa em seu servidor.

jaap3
fonte