Qual è la migliore app di ricerca per Django? [chiuso]


110

Sto costruendo un progetto Django che necessita di funzionalità di ricerca e, finché non c'è django.contrib.search, devo scegliere un'app di ricerca. Allora, qual è il migliore? Con "migliore" intendo ...

  • facile da installare / configurare
  • ha un'API compatibile con Django o almeno Python
  • può eseguire ricerche ragionevolmente complesse

Ecco alcune app di cui ho sentito parlare, suggeriscine altre se ne conosci:

Vorrei anche evitare di utilizzare un motore di ricerca di terze parti (come Google SiteSearch), perché alcuni dei dati che vorrei indicizzare sono solo per i membri del sito e non dovrebbero essere pubblici.



Normalmente cose come "migliore" sono piuttosto soggettive, ma django ha davvero un'app di ricerca "migliore", come mostra la risposta accettata.

A meno che io non fraintenda totalmente django, questa è ancora una richiesta di biblioteca e quindi fuori tema.
Jeffrey Bosboom

Risposte:


104

Dai un'occhiata a Haystack Search , un nuovo livello di astrazione della ricerca basato su modello che attualmente supporta Xapian , Solr e Whoosh . Sembra che sia ben supportato e documentato.


3
Haystack è in fase di sviluppo attivo e l'autore è sempre disponibile tramite l'elenco e-mail.
Tom

2
Dal progetto djangosearch: "Questo progetto non è più in fase di sviluppo attivo. Se stai cercando un'applicazione di ricerca full text di django che funzioni con più motori di ricerca, controlla pagliaio. Se stai cercando qualcosa di specifico per Solr, potresti voglio provare il solango. "
Esteban Feldman

Haystack è stato supportato male, se non del tutto, per un bel po 'di tempo. Ti consiglio di evitarlo a questo punto. Forse lo risolveranno in futuro, ma ora è in un brutto posto.
Aaron Schif

Sono d'accordo, l'ultima versione di haystack (2.1) non funziona affatto con la mia versione python 2.7 di django 1.4.
Chris Hawkes

19

Justin, proverei prima djangosearch : Jacob Kaplan-Moss (lo sviluppatore principale di Django) ci sta lavorando.

Potenziali pericoli:

  • La home page avverte che l'API potrebbe non essere del tutto stabile

Benefici potenziali:

  • "L'obiettivo a lungo termine è che questo diventi django.contrib.search".

45
La pagina ora dice "Questo progetto non è più in fase di sviluppo attivo. Se stai cercando un'applicazione di ricerca full text django che funzioni con più motori di ricerca, controlla Haystack".
Tomas Andrle

18

Sto cercando la stessa cosa, come molte altre persone. Speriamo che django.contrib.search venga aggiunto presto.

Nel frattempo, questo è quello che ho trovato:

A me, la maggior parte sembra piuttosto complicata e, francamente, un po 'scoraggiante da implementare. Sarei interessato a sapere cosa ne pensi di questi.



8

Consiglierei Sphinx per la ricerca e l'aggregazione full-text e django-sphinx è abbastanza buono per l'uso in produzione. Abbiamo scoperto che Sphinx era il modo meno dispendioso in termini di risorse e più veloce per indicizzare e cercare i nostri documenti e che django-sphinx era un bel wrapper sopra il client sphinx.

Il gruppo per aggregazione è particolarmente carino, se ad esempio vuoi mostrare quanti documenti con un certo tag o di un certo autore (o entrambi) hanno trovato una ricerca. Anche gli aggiornamenti degli attributi in memoria erano convenienti, specialmente per rimuovere immediatamente gli articoli cancellati.


6

Grazie Garth. Avevo visto che djangosearch voleva diventare la ricerca ufficiale di Django, ma ero titubante nell'usarlo perché non riuscivo a trovare alcuna documentazione! Fortunatamente, c'è un README in Subversion che non avevo mai visto prima e rende l'API molto interessante:

# 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")

6

Avevo solo bisogno di una soluzione molto rapida che fosse semplice per un'app interna.

Ho trovato l'articolo Aggiungere la ricerca a Django in un attimo e per me ha funzionato magnificamente!

Ovviamente manca la velocità, la scalabilità e le caratteristiche dei progetti reali come Haystack, ma questo è più facile da configurare e non ho bisogno di nient'altro che la parola chiave AND-search.



2

Sembra che tutti qui abbiano perso django-xappy

Dopo una rapida valutazione di tutti i componenti aggiuntivi di ricerca esistenti per Django, ho trovato questo più flessibile e più facile da usare. È ruvido in alcuni punti, ma è ancora il modo migliore per utilizzare la potenza del motore di ricerca Xapian all'interno dei progetti Django.



1

Se hai una grande quantità di dati da indicizzare o prevedi un traffico elevato, ti suggerisco di utilizzare un motore di ricerca esterno, come Solr . In questo modo, manterrai l' approccio del nulla condiviso e sarai in grado di scalare i componenti del tuo sito in modo indipendente.


1

Penso che dovrò gridare a Djapian.

È solido come una roccia ... basta tirare giù una distribuzione dei sorgenti e sbirciare dentro. Codice di prim'ordine, non molti commenti però ..

È ancora un progetto software giovane, ma penso che la comunità di django dovrebbe dare il suo peso a questo.


0

Grazie Joe,

Abbiamo deciso di utilizzare Tsearch2 e un adattatore postgres personalizzato. Tsearch2 non ha bisogno di un processo aggiuntivo per essere eseguito, il che era conveniente dato che siamo su un hosting WebFaction con memoria limitata ... Non è ancora completamente fatto, ma sembra essere una buona soluzione ...


0

Ho trovato Djoosh che si affida al motore di ricerca esterno Pure -Python Whoosh per funzionare bene con il mio cervello "Python".


0

Se sei disposto a utilizzare un motore di ricerca di terze parti, posso consigliare Yahoo BOSS e django-bosssearch .

Yahoo BOSS è un servizio a pagamento, ma ti consente di risparmiare la configurazione e la manutenzione di altri software di ricerca sul tuo server.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.