As a general principle, I put Whoosh in the same category as SQLite: great for getting started, wonderful for single-user or really small-scale apps, but not suitable for large-scale deployment.
Whoosh is, in my experience, about an order of magnitude slower than Solr. A typical search against a bigish Solr index I’ve got in production takes about a hundredth of a second ; the same search using Whoosh and the same data takes roughly a tenth of second.
You should decide what’s “fast enough” for you, but I don’t think Whoosh is a good idea for anything where you expect high performance.
I found xapian extremely easy to setup on my Debian.
aptitude install python-xapian
and that’s all.
To use it with django there is a very good app named djapian.
- Django form with many-to-many relationship does not save
- Custom Grouping on OpenAPI endpoints with Django Rest Framework
- Django filter through multiple fields in a many-to-many intermediary table
- Django – Template objects access verbose name
- Django: Make JS source maps compatible with staticfiles filename hashing
I would go with either Solr or Xapian (although it’s not quite officially supported by haystack yet; see this thread). Solr is easy to setup and get running if you follow the tutorial, however I’ve had a heck of a time getting it installed in a production environment – but that’s mostly due to my lack of experience with Java server environments. Your mileage may vary.
I’d also put in another plug for djapian. It’s very well documented and is under very active development.
- Django template variable value to string literal comparison fails
- Django says is_ajax is false on a JQuery AJAX request
You should use elasticsearch instead of whoosh….It is more faster and has more functionalities than solr also.
- How do I make a custom model Field call to_python when the field is accessed immediately after initialization (not loaded from DB) in Django >=1.10?
- Django ORM join without foreign keys and without raw queries