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.



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.


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”.

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.



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.


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

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.



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.



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.


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.


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 ...


0

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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.