Jaka jest najlepsza wyszukiwarka Django? [Zamknięte]

110

Buduję projekt Django, który potrzebuje funkcji wyszukiwania i dopóki nie pojawi się django.contrib.search, muszę wybrać aplikację do wyszukiwania. Więc który jest najlepszy? Przez „najlepsze” mam na myśli ...

  • łatwy w instalacji / konfiguracji
  • ma interfejs API przyjazny dla Django lub przynajmniej Pythona
  • potrafi wykonywać dość złożone wyszukiwania

Oto kilka aplikacji, o których słyszałem, zasugeruj inne, jeśli znasz jakieś:

Chciałbym również uniknąć korzystania z wyszukiwarki innej firmy (takiej jak Google SiteSearch), ponieważ niektóre dane, które chciałbym zindeksować, dotyczą tylko członków witryny i nie powinny być publiczne.

Justin Voss
źródło
1
djangopackages.com/grids/g/search
Salman von Abbas,
Zwykle rzeczy takie jak „najlepsze” są dość subiektywne, ale django naprawdę ma jedną „najlepszą” wyszukiwarkę, jak pokazuje zaakceptowana odpowiedź.
O ile całkowicie nie zrozumiem django, jest to nadal prośba o bibliotekę, a zatem nie na temat.
Jeffrey Bosboom

Odpowiedzi:

104

Sprawdź Haystack Search - nową warstwę abstrakcji wyszukiwania opartą na modelu, która obecnie obsługuje Xapian , Solr i Whoosh . Wygląda na to, że jest dobrze obsługiwany i udokumentowany.

kpw
źródło
3
Haystack jest w trakcie aktywnego rozwoju, a autor jest zawsze dostępny za pośrednictwem listy e-mailowej.
Tom
2
Z projektu djangosearch: „Ten projekt nie jest już aktywnie rozwijany. Jeśli szukasz aplikacji do wyszukiwania pełnotekstowego django, która współpracuje z wieloma wyszukiwarkami, sprawdź haystack. Jeśli szukasz czegoś specyficznego dla Solr, możesz chcę spróbować solango. ”
Esteban Feldman
Haystack od dłuższego czasu jest źle obsługiwany, jeśli w ogóle. Zalecam unikanie tego w tym momencie. Może naprawią to w przyszłości, ale teraz jest w złym miejscu.
Aaron Schif
Zgadzam się, najnowsza wersja haystack (2.1) w ogóle nie działa z moim django 1.4 w wersji Python 2.7.
Chris Hawkes
19

Justin, najpierw spróbuję djangosearch : pracuje nad tym Jacob Kaplan-Moss (główny programista Django).

Potencjalne zagrożenia:

  • Strona główna ostrzega, że ​​interfejs API może nie być całkowicie stabilny

Ewentualne zyski:

  • „Długofalowym celem jest, aby to się stało django.contrib.search”.
Garth Kidd
źródło
45
Strona mówi teraz: „Ten projekt nie jest już aktywnie rozwijany. Jeśli szukasz aplikacji do wyszukiwania pełnotekstowego django, która współpracuje z wieloma wyszukiwarkami, sprawdź Haystack”.
Tomas Andrle
18

Szukam tego samego, co wielu innych ludzi. Miejmy nadzieję, że django.contrib.search zostanie wkrótce dodane.

W międzyczasie oto co znalazłem:

Dla mnie większość wygląda na dość skomplikowaną i, szczerze mówiąc, trochę onieśmielającą do wdrożenia. Chciałbym się dowiedzieć, co o nich myślisz.

davidhund
źródło
9

Strona kodowa google dla djangosearch wskazuje, że nie jest już aktywnie rozwijana i sugeruje stóg siana lub solango .

Joe Germuska
źródło
2
Solango twierdzi, że nie jest już w fazie rozwoju i zaleca stosowanie Haystack.
Rory,
8

Poleciłbym Sphinx do wyszukiwania pełnotekstowego i agregacji, a django-sphinx jest wystarczająco dobry do użytku produkcyjnego. Okazało się, że Sphinx był najmniej zasobochłonnym i najszybszym sposobem indeksowania i przeszukiwania naszych dokumentów, a django-sphinx był ładnym opakowaniem na kliencie sphinx.

Grupowanie według agregacji jest szczególnie przyjemne, jeśli na przykład chcesz wyświetlić, ile dokumentów z określonym tagiem lub określonego autora (lub obu) pasuje do wyszukiwania. Aktualizacje atrybutów w pamięci były również wygodne, zwłaszcza w przypadku natychmiastowego usuwania usuniętych artykułów.

Joe W.
źródło
6

Dzięki Garth. Widziałem, że djangosearch chciał zostać oficjalną wyszukiwarką Django, ale wahałem się, czy z niej skorzystać, ponieważ nie mogłem znaleźć żadnej dokumentacji! Na szczęście w Subversion jest README , którego wcześniej nie widziałem i dzięki temu API wygląda bardzo fajnie:

# 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
źródło
6

Potrzebowałem tylko bardzo szybkiego rozwiązania, które nie byłoby kłopotliwe dla wewnętrznej aplikacji.

Znalazłem artykuł Dodawanie wyszukiwania do Django w mgnieniu oka i zadziałał świetnie!

Oczywiście brakuje mu szybkości, skalowalności i funkcji prawdziwych projektów, takich jak Haystack, ale ten jest łatwiejszy do skonfigurowania i tak naprawdę nie potrzebuję niczego innego niż słowo kluczowe AND-search.

odinho - Velmont
źródło
2

Wygląda na to, że wszyscy tutaj tęsknili za django-xappy

Po szybkiej ocenie wszystkich istniejących dodatków wyszukiwania dla Django, uznałem ten za najbardziej elastyczny i najłatwiejszy w użyciu. W kilku miejscach jest szorstki na krawędziach, ale nadal jest to najlepszy sposób na wykorzystanie mocy wyszukiwarki Xapian w projektach Django.

vvarp
źródło
2

Możesz spojrzeć na wyszukiwarkę Django Solr (aka "Solango"), która zawiera niezłą dokumentację na początek ...

ahagenbruch
źródło
1

Jeśli masz dużą ilość danych do zindeksowania lub spodziewasz się dużego ruchu, proponuję skorzystać z zewnętrznej wyszukiwarki, np . Solr . W ten sposób zachowasz podejście „ nic nie współdzielone” i będziesz w stanie niezależnie skalować komponenty witryny.

zgoda
źródło
1

Myślę, że będę musiał krzyknąć do Djapiana.

Jest solidny jak skała ... po prostu ściągnij dystrybucję źródeł i zajrzyj do środka. Kod najwyższej klasy, ale niezbyt wiele komentarzy ...

To wciąż młody projekt oprogramowania, ale myślę, że społeczność django powinna poprzeć ten projekt.


źródło
0

Dzięki Joe,

Zdecydowaliśmy się na Tsearch2 i niestandardowy adapter postgres. Tsearch2 nie potrzebuje dodatkowego procesu do uruchomienia, co było wygodne, ponieważ korzystamy z hostingu WebFaction z ograniczoną pamięcią ... Nie jest to jeszcze ukończone, ale wydaje się być dobrym rozwiązaniem ...

davidhund
źródło
0

Znalazłem Djoosh który opiera się na czystej Pythona wyszukiwania zewnętrzny silnik Whoosh się dobrze z moim 'Pythona mózgu.


źródło
0

Jeśli chcesz skorzystać z wyszukiwarki innej firmy, mogę polecić Yahoo BOSS i django-bosssearch .

Yahoo BOSS jest usługą płatną, ale oszczędza konfigurowanie i utrzymywanie innego oprogramowania do wyszukiwania na serwerze.

jaap3
źródło