¿Cuál es la mejor aplicación de búsqueda de Django? [cerrado]

110

Estoy construyendo un proyecto de Django que necesita la funcionalidad de búsqueda, y hasta que haya una django.contrib.search, tengo que elegir una aplicación de búsqueda. ¿Así que cuál es el mejor? Por "mejor" quiero decir ...

  • fácil de instalar / configurar
  • tiene una API compatible con Django o al menos Python
  • puede realizar búsquedas razonablemente complejas

Aquí hay algunas aplicaciones de las que he oído hablar, sugiera otras si conoce alguna:

También me gustaría evitar el uso de un motor de búsqueda de terceros (como Google SiteSearch), porque algunos de los datos que me gustaría indexar son solo para miembros del sitio y no deberían ser públicos.

Justin Voss
fuente
Normalmente, cosas como "mejor" son bastante subjetivas, pero django realmente tiene una "mejor" aplicación de búsqueda como muestra la respuesta aceptada.
A menos que no entienda completamente django, esta sigue siendo una solicitud de biblioteca y, por lo tanto, fuera de tema.
Jeffrey Bosboom

Respuestas:

104

Eche un vistazo a Haystack Search , una nueva capa de abstracción de búsqueda basada en modelos que actualmente admite Xapian , Solr y Whoosh . Parece que está bien documentado y respaldado.

kpw
fuente
3
Haystack está en desarrollo activo y el autor siempre está disponible a través de la lista de correo electrónico.
Tom
2
Del proyecto djangosearch: "Este proyecto ya no está en desarrollo activo. Si está buscando una aplicación de búsqueda de texto completo de django que funcione con varios motores de búsqueda, consulte haystack. Si está buscando algo específico para Solr, puede quiero probar solango. "
Esteban Feldman
Haystack ha tenido un mal soporte, si es que lo ha recibido, durante bastante tiempo. Te recomiendo que lo evites en este momento. Tal vez lo arreglen en el futuro, pero ahora está en un mal lugar.
Aaron Schif
Estoy de acuerdo, la última versión de haystack (2.1) no funciona en absoluto con mi versión python 2.7 de django 1.4.
Chris Hawkes
19

Justin, primero probaría con djangosearch : Jacob Kaplan-Moss (desarrollador principal de Django) está trabajando en ello.

Peligros potenciales:

  • La página de inicio advierte que la API podría no ser completamente estable

Beneficios potenciales:

  • "El objetivo a largo plazo es que esto se convierta django.contrib.search".
Garth Kidd
fuente
45
La página ahora dice "Este proyecto ya no está en desarrollo activo. Si está buscando una aplicación de búsqueda de texto completo de django que funcione con múltiples motores de búsqueda, consulte Haystack".
Tomas Andrle
18

Estoy buscando lo mismo, al igual que muchas otras personas. Esperemos que pronto se agregue django.contrib.search .

Mientras tanto, esto es lo que encontré:

Para mí, la mayoría parece bastante complicada y, francamente, un poco abrumadora de implementar. Me interesaría saber qué piensas de estos.

davidhund
fuente
9

La página de códigos de Google para djangosearch indica que ya no está en desarrollo activo y sugiere pajar o solango .

Joe Germuska
fuente
2
Solango dice que ya no está en desarrollo y recomienda el uso de Haystack.
Rory
8

Recomendaría Sphinx para búsqueda y agregación de texto completo, y django-sphinx es lo suficientemente bueno para uso en producción. Descubrimos que Sphinx era la forma menos intensiva en recursos y más rápida de indexar y buscar en nuestros documentos y que django-sphinx era un buen contenedor además del cliente sphinx.

El grupo por agregación es particularmente bueno si, por ejemplo, desea mostrar cuántos documentos con una determinada etiqueta o por un determinado autor (o ambos) coincidieron con una búsqueda. Las actualizaciones de atributos en memoria también fueron convenientes, especialmente para eliminar artículos eliminados de inmediato.

Joe W.
fuente
6

Gracias Garth. Había visto que djangosearch quería convertirse en la búsqueda oficial de Django, ¡pero dudaba en usarlo porque no podía encontrar ninguna documentación! Afortunadamente, hay un README en subversión que no había visto antes y hace que la API se vea muy bien:

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

Solo necesitaba una solución muy rápida que no suponga ningún problema para una aplicación interna.

Encontré el artículo Agregar búsqueda a Django en un instante , ¡y funcionó de maravilla para mí!

Obviamente, carece de la velocidad, escalabilidad y características de los proyectos reales como Haystack, pero este es más fácil de configurar y realmente no necesito nada más que la palabra clave AND-search.

odinho - Velmont
fuente
2

Parece que todos aquí extrañaron a django-xappy

Después de una evaluación rápida de todos los complementos de búsqueda existentes para Django, encontré este como el más flexible y fácil de usar. Es irregular en algunos lugares, pero sigue siendo la mejor manera de utilizar la potencia del motor de búsqueda Xapian dentro de los proyectos de Django.

vvarp
fuente
2

Es posible que desee ver la búsqueda de Django Solr (también conocida como "Solango") que viene con una buena documentación para comenzar ...

ahagenbruch
fuente
1

Si tiene una gran cantidad de datos para indexar o espera mucho tráfico, le sugiero que utilice algún motor de búsqueda externo, como Solr . De esta manera, mantendrá el enfoque de no compartir nada y podrá escalar los componentes de su sitio de forma independiente.

zgoda
fuente
1

Creo que voy a tener que saludar a Djapian.

Es sólido como una roca ... simplemente baje una distribución de fuente y eche un vistazo al interior. Código de primera categoría, aunque no muchos comentarios.

Todavía es un proyecto de software joven, pero creo que la comunidad de django debería respaldar este.


fuente
0

Gracias Joe,

Decidimos ir con Tsearch2 y un adaptador de postgres personalizado. Tsearch2 no necesita un proceso adicional para ejecutarse, lo cual fue conveniente ya que estamos en un hosting de WebFaction con memoria limitada ... Aún no está completamente terminado, pero parece ser una buena solución ...

davidhund
fuente
0

Encontré Djoosh, que se basa en el motor de búsqueda externo de Python puro Whoosh para funcionar bien con mi cerebro 'Python'.


fuente
0

Si está dispuesto a utilizar un motor de búsqueda de terceros, puedo recomendar Yahoo BOSS y django-bosssearch .

Yahoo BOSS es un servicio de pago, pero le ahorra configurar y mantener otro software de búsqueda en su servidor.

jaap3
fuente