Was ist die beste Django-Such-App? [geschlossen]

110

Ich baue ein Django-Projekt, das Suchfunktionen benötigt, und bis es eines gibt django.contrib.search, muss ich eine Such-App auswählen. Also, welches ist das Beste? Mit "am besten" meine ich ...

  • einfach zu installieren / einzurichten
  • hat eine Django- oder zumindest Python-freundliche API
  • kann einigermaßen komplexe Suchvorgänge durchführen

Hier sind einige Apps, von denen ich gehört habe. Bitte schlagen Sie andere vor, wenn Sie welche kennen:

Ich möchte auch die Verwendung einer Suchmaschine eines Drittanbieters (wie Google SiteSearch) vermeiden, da einige der Daten, die ich indizieren möchte, nur für Website-Mitglieder bestimmt sind und nicht öffentlich sein sollten.

Justin Voss
quelle
Normalerweise sind Dinge wie "am besten" ziemlich subjektiv, aber Django hat wirklich eine "beste" Such-App, wie die akzeptierte Antwort zeigt.
Sofern ich Django nicht völlig falsch verstehe, ist dies immer noch eine Bibliotheksanfrage und daher nicht zum Thema gehörend.
Jeffrey Bosboom

Antworten:

104

Schauen Sie sich Haystack Search an - eine neue modellbasierte Suchabstraktionsschicht , die derzeit Xapian , Solr und Whoosh unterstützt . Sieht so aus, als ob es gut unterstützt und dokumentiert wird.

kpw
quelle
3
Haystack befindet sich in der aktiven Entwicklung und der Autor ist immer über die E-Mail-Liste erreichbar.
Tom
2
Aus dem Djangosearch-Projekt: "Dieses Projekt befindet sich nicht mehr in der aktiven Entwicklung. Wenn Sie nach einer Django-Volltextsuchanwendung suchen, die mit mehreren Suchmaschinen funktioniert, schauen Sie sich Heuhaufen an. Wenn Sie nach etwas suchen, das für Solr spezifisch ist, könnten Sie dies tun." Ich möchte es mit Solango versuchen. "
Esteban Feldman
Haystack wird seit geraumer Zeit, wenn überhaupt, schlecht unterstützt. Ich empfehle Ihnen, dies an dieser Stelle zu vermeiden. Vielleicht werden sie es in Zukunft reparieren, aber es ist jetzt an einem schlechten Ort.
Aaron Schif
Ich bin damit einverstanden, dass die neueste Version von haystack (2.1) mit meiner Python 2.7-Version von django 1.4 überhaupt nicht funktioniert.
Chris Hawkes
19

Justin, ich würde zuerst Djangosearch ausprobieren : Jacob Kaplan-Moss (Djangos Hauptentwickler) arbeitet daran.

Mögliche Gefahren:

  • Die Homepage warnt davor, dass die API möglicherweise nicht vollständig stabil ist

Mögliche Vorteile:

  • "Das langfristige Ziel ist es, dies zu werden django.contrib.search."
Garth Kidd
quelle
45
Auf der Seite heißt es jetzt: "Dieses Projekt befindet sich nicht mehr in der aktiven Entwicklung. Wenn Sie nach einer Django-Volltextsuchanwendung suchen, die mit mehreren Suchmaschinen funktioniert, schauen Sie sich Haystack an."
Tomas Andrle
18

Ich suche das Gleiche wie viele andere Menschen. Hoffen wir, dass django.contrib.search bald hinzugefügt wird.

In der Zwischenzeit habe ich Folgendes gefunden:

Für mich sehen die meisten ziemlich kompliziert und ehrlich gesagt ein wenig entmutigend aus. Es würde mich interessieren, was Sie davon halten.

Davidhund
quelle
9

Die Google-Codepage für Djangosearch zeigt an, dass sie sich nicht mehr in der aktiven Entwicklung befindet, und schlägt Heuhaufen oder Solango vor .

Joe Germuska
quelle
2
Solango sagt, dass es sich nicht mehr in der Entwicklung befindet und empfiehlt die Verwendung von Heuhaufen.
Rory
8

Ich würde Sphinx für die Volltextsuche und -aggregation empfehlen, und Django-Sphinx ist gut genug für die Produktion. Wir haben festgestellt, dass Sphinx der am wenigsten ressourcenintensive und schnellste Weg ist, unsere Dokumente zu indizieren und zu durchsuchen, und dass Django-Sphinx ein netter Wrapper über dem Sphinx-Client ist.

Die Gruppierung nach Aggregation ist besonders hilfreich, wenn Sie beispielsweise anzeigen möchten, wie viele Dokumente mit einem bestimmten Tag oder einem bestimmten Autor (oder beiden) mit einer Suche übereinstimmen. Im Speicher waren Attributaktualisierungen ebenfalls praktisch, insbesondere um gelöschte Artikel sofort zu entfernen.

Joe W.
quelle
6

Danke Garth. Ich hatte gesehen, dass Djangosearch die offizielle Django-Suche werden wollte, aber ich zögerte, sie zu verwenden, weil ich keine Dokumentation finden konnte! Zum Glück gibt es eine README-Datei in Subversion , die ich vorher noch nicht gesehen habe, und die API sieht dadurch sehr cool aus:

# 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
quelle
6

Ich brauchte nur eine sehr schnelle Lösung, die für eine interne App kein Problem war.

Ich habe den Artikel Hinzufügen einer Suche zu Django im Handumdrehen gefunden , und das hat bei mir hervorragend funktioniert!

Natürlich fehlen die Geschwindigkeit, Skalierbarkeit und Funktionen der realen Projekte wie Haystack, aber dieses ist einfacher einzurichten, und ich brauche eigentlich nichts anderes als die Suche nach Schlüsselwörtern UND.

Odinho - Velmont
quelle
2

Es sieht so aus, als hätten alle hier Django-Xappy verpasst

Nach einer schnellen Bewertung aller vorhandenen Such-Addons für Django fand ich dieses als am flexibelsten und am einfachsten zu verwendenden. Es ist an wenigen Stellen rau an den Rändern, aber es ist immer noch die beste Möglichkeit, die Leistung der Xapian- Suchmaschine in Django-Projekten zu nutzen.

vvarp
quelle
2

Vielleicht möchten Sie sich die Django Solr-Suche (auch bekannt als "Solango") ansehen, die eine nette Dokumentation enthält, um Ihnen den Einstieg zu erleichtern ...

ahagenbruch
quelle
1

Wenn Sie eine große Datenmenge indizieren müssen oder hohen Datenverkehr erwarten, würde ich die Verwendung einer externen Suchmaschine wie Solr empfehlen . Auf diese Weise behalten Sie den Shared-Nothing- Ansatz bei und können Ihre Site-Komponenten unabhängig skalieren.

zgoda
quelle
1

Ich glaube, ich muss Djapian einen Gruß aussprechen.

Es ist absolut solide ... ziehen Sie einfach eine Quellenverteilung herunter und schauen Sie hinein. Erstklassiger Code, nicht sehr viele Kommentare.

Es ist noch ein junges Softwareprojekt, aber ich denke, die Django-Community sollte ihr Gewicht hinter dieses Projekt werfen.


quelle
0

Danke Joe,

Wir haben uns für Tsearch2 und einen benutzerdefinierten Postgres-Adapter entschieden. Tsearch2 benötigt keinen zusätzlichen Prozess zum Ausführen, was praktisch war, da wir uns auf einem WebFaction-Hosting mit begrenztem Speicher befinden ... Es ist noch nicht vollständig fertig, scheint aber eine gute Lösung zu sein ...

Davidhund
quelle
0

Ich habe Djoosh gefunden, das sich auf die externe Python-Suchmaschine Whoosh stützt , um gut mit meinem ' Python' -Gehirn zusammenzuarbeiten.


quelle
0

Wenn Sie bereit sind, eine Suchmaschine eines Drittanbieters zu verwenden, kann ich Yahoo BOSS und django-bosssearch empfehlen .

Yahoo BOSS ist ein kostenpflichtiger Dienst, der Ihnen jedoch das Einrichten und Verwalten anderer Suchsoftware auf Ihrem Server erspart.

jaap3
quelle