Apa aplikasi pencarian Django terbaik? [Tutup]

110

Saya sedang membangun proyek Django yang membutuhkan fungsionalitas pencarian, dan sampai ada django.contrib.search, saya harus memilih aplikasi pencarian. Jadi, mana yang terbaik? Yang saya maksud dengan "terbaik" ...

  • mudah dipasang / disiapkan
  • memiliki Django- atau setidaknya API ramah-Python
  • dapat melakukan penelusuran yang cukup rumit

Berikut beberapa aplikasi yang pernah saya dengar, harap sarankan yang lain jika Anda tahu:

Saya juga ingin menghindari penggunaan mesin pencari pihak ketiga (seperti Google SiteSearch), karena beberapa data yang ingin saya indeks hanya untuk anggota situs dan tidak boleh publik.

Justin Voss
sumber
Biasanya hal-hal seperti "terbaik" cukup subjektif, tetapi django benar-benar memiliki satu aplikasi pencarian "terbaik" seperti yang ditunjukkan oleh jawaban yang diterima.
Kecuali saya benar-benar salah paham tentang django, ini masih merupakan permintaan perpustakaan dan dengan demikian di luar topik.
Jeffrey Bosboom

Jawaban:

104

Lihat Haystack Search - lapisan abstraksi pencarian berbasis model baru yang saat ini mendukung Xapian , Solr dan Whoosh . Sepertinya itu didukung dan didokumentasikan dengan baik.

kpw
sumber
3
Haystack sedang dalam pengembangan aktif dan penulis selalu tersedia melalui daftar email.
Tom
2
Dari proyek djangosearch: "Proyek ini tidak lagi dalam pengembangan aktif. Jika Anda mencari aplikasi pencarian teks lengkap django yang bekerja dengan banyak mesin pencari, periksa tumpukan jerami. Jika Anda mencari sesuatu yang spesifik untuk Solr, Anda mungkin ingin mencoba solango. "
Esteban Feldman
Haystack telah didukung dengan buruk, jika ada, cukup lama. Saya sarankan Anda menghindarinya saat ini. Mungkin mereka akan memperbaikinya di masa depan tetapi di tempat yang buruk sekarang.
Aaron Schif
Saya setuju, versi terbaru dari haystack (2.1) tidak berfungsi sama sekali dengan django 1.4 versi 2.7 python saya.
Chris Hawkes
19

Justin, saya akan mencoba djangosearch dulu: Jacob Kaplan-Moss (pengembang utama Django) sedang mengerjakannya.

Bahaya potensial:

  • Halaman beranda memperingatkan bahwa API mungkin tidak sepenuhnya stabil

Manfaat potensial:

  • “Tujuan jangka panjangnya adalah agar ini menjadi django.contrib.search.”
Garth Kidd
sumber
45
Halaman tersebut sekarang mengatakan "Proyek ini tidak lagi dalam pengembangan aktif. Jika Anda mencari aplikasi pencarian teks lengkap django yang bekerja dengan beberapa mesin pencari, lihat Haystack."
Tomas Andrle
18

Saya mencari hal yang sama, seperti banyak orang lainnya. Semoga django.contrib.search segera ditambahkan.

Sementara itu, inilah yang saya temukan:

Bagi saya, sebagian besar terlihat cukup rumit dan, sejujurnya, sedikit menakutkan untuk diterapkan. Saya tertarik untuk mempelajari pendapat Anda tentang ini.

davidhund.dll
sumber
9

Halaman kode google untuk djangosearch menunjukkan bahwa itu tidak lagi dalam pengembangan aktif, dan menyarankan tumpukan jerami atau solango .

Joe Germuska
sumber
2
Solango mengatakan itu tidak lagi dalam pengembangan dan merekomendasikan penggunaan tumpukan jerami.
Rory
8

Saya akan merekomendasikan Sphinx untuk pencarian teks lengkap dan agregasi, dan django-sphinx cukup baik untuk penggunaan produksi. Kami menemukan bahwa Sphinx adalah cara yang paling tidak intensif sumber daya dan tercepat untuk mengindeks dan mencari dokumen kami dan bahwa django-sphinx adalah pembungkus yang bagus di atas klien sphinx.

Kelompok berdasarkan agregasi sangat bagus, jika misalnya Anda ingin menampilkan berapa banyak dokumen dengan tag tertentu atau oleh penulis tertentu (atau keduanya) yang cocok dengan pencarian. Dalam pembaruan atribut memori juga nyaman, terutama untuk menghapus artikel yang dihapus segera.

Joe W.
sumber
6

Terima kasih Garth. Saya telah melihat bahwa djangosearch ingin menjadi pencarian Django resmi, tetapi saya ragu untuk menggunakannya karena saya tidak dapat menemukan dokumentasi apapun! Untungnya, ada README dalam subversi yang belum pernah saya lihat sebelumnya, dan itu membuat API terlihat sangat keren:

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

Saya hanya membutuhkan solusi yang sangat cepat yang tidak merepotkan untuk aplikasi internal.

Saya menemukan artikel Menambah pencarian ke Django dalam sekejap , dan itu bekerja sangat baik bagi saya!

Jelas itu tidak memiliki kecepatan, skalabilitas, dan fitur dari proyek nyata seperti Haystack, tetapi yang ini lebih mudah disiapkan, dan saya tidak benar-benar membutuhkan apa pun selain kata kunci DAN-pencarian.

odinho - Velmont
sumber
2

Sepertinya semua orang di sini merindukan django-xappy

Setelah evaluasi cepat dari semua tambahan pencarian yang ada untuk Django, saya menemukan yang ini sebagai yang paling fleksibel dan termudah untuk digunakan. Memang kasar di beberapa tempat, tetapi ini masih cara terbaik untuk menggunakan kekuatan mesin pencari Xapian di dalam proyek Django.

vvarp
sumber
2

Anda mungkin ingin melihat pencarian Django Solr (alias "Solango") yang datang dengan beberapa dokumentasi bagus untuk membantu Anda memulai ...

ahagenbruch
sumber
1

Jika Anda memiliki sejumlah besar data untuk diindeks atau Anda mengharapkan lalu lintas tinggi, saya sarankan menggunakan beberapa mesin pencari eksternal, seperti Solr . Dengan cara ini, Anda akan tetap menggunakan pendekatan shared-nothing dan dapat menskalakan komponen situs Anda secara mandiri.

zgoda.dll
sumber
1

Saya pikir saya harus berteriak kepada Djapian.

Ini sekuat batu ... cukup tarik ke bawah distribusi sumber dan intip ke dalam. Kode kedudukan tertinggi, tidak banyak komentar tho ..

Ini masih merupakan proyek perangkat lunak yang masih muda, tetapi saya pikir komunitas django harus mendukung proyek ini.


sumber
0

Terima kasih Joe,

Kami memutuskan untuk menggunakan Tsearch2 dan adaptor custom postgres. Tsearch2 tidak memerlukan proses tambahan untuk dijalankan, yang nyaman karena kita menggunakan hosting WebFaction dengan memori terbatas ... Ini belum sepenuhnya selesai, tetapi tampaknya menjadi solusi yang baik ...

davidhund.dll
sumber
0

Saya menemukan Djoosh yang mengandalkan mesin pencari eksternal murni-python Whoosh untuk bekerja dengan baik dengan otak 'Python' saya.


sumber
0

Jika Anda ingin menggunakan mesin pencari pihak ketiga, saya dapat merekomendasikan Yahoo BOSS dan django-bosssearch .

Yahoo BOSS adalah layanan berbayar, tetapi ini menghemat pengaturan dan pemeliharaan perangkat lunak pencarian lain di server Anda.

jaap3
sumber