1Changelog
2=========
3
4v2.6.0 (2017-01-02)
5-------------------
6
7- Merge #1460: backend support for Elasticsearch 2.x. [Chris Adams]
8
9  Thanks to João Junior (@joaojunior) and Bruno Marques (@ElSaico) for the
10  patch
11
12  Closes #1460
13  Closes #1391
14  Closes #1336
15  Closes #1247
16
17- Docs: update Elasticsearch support status. [Chris Adams]
18
19- Tests: avoid unrelated failures when elasticsearch is not installed.
20  [Chris Adams]
21
22  This avoids spurious failures in tests for other search engines when the
23  elasticsearch client library is not installed at all but the ES backend
24  is still declared in the settings.
25
26- Tests: friendlier log message for ES version checks. [Chris Adams]
27
28  This avoids a potentially scary-looking ImportError flying by in the
29  test output for what's expected in normal usage.
30
31- Tests: update ES version detection in settings. [Chris Adams]
32
33  This allows the tests to work when run locally or otherwise outside of
34  our Travis / Tox scripts by obtaining the version from the installed
35  `elasticsearch` client library.
36
37- Tests: update ES1 client version check message. [Chris Adams]
38
39  The name of the Python module changed over time and this now matches the
40  ES2 codebase behaviour of having the error message give you the exact
41  package to install including the version.
42
43- Update travis script with ES documentation. [Chris Adams]
44
45  Add a comment for anyone wondering why this isn't a simple
46  `add-apt-repository` call
47
48- Fixed More Like This test with deferred query on Elasticsearch 2.x.
49  [Bruno Marques]
50
51- Fixed expected query behaviour on ES2.x test. [Bruno Marques]
52
53- Install elasticsearch2.0 via apt. [joaojunior]
54
55- Install elasticsearch2.0 via apt. [joaojunior]
56
57- Remove typo. [joaojunior]
58
59- Remove services elasticsearch. [joaojunior]
60
61- Fix typo. [joaojunior]
62
63- Sudo=true in .travis.yml to install elasticsearch from apt-get.
64  [joaojunior]
65
66- Fix .travis. [joaojunior]
67
68- Add logging in __init__ tests elasticsearch. [joaojunior]
69
70- Get changes from Master to resolve conflicts. [joaojunior]
71
72- Install elasticsearch1.7 via apt. [joaojunior]
73
74- Update Files to run tests in Elasticsearch2.x. [joaojunior]
75
76- Refactoring the code in pull request #1336 . This pull request is to
77  permit use ElasticSearch 2.X. [joaojunior]
78
79- Improved custom object identifier test. [Chris Adams]
80
81  This provides an example for implementors and ensures that failing to
82  use the custom class would cause a test failure.
83
84- Update management backend documentation for `--using` [flinkflonk]
85
86  Thanks to @flinkflonk for the patch!
87
88  Closes #1215
89
90- Fix filtered "more like this" queries (#1459) [David Cook]
91
92  Now the Solr backend correctly handles a `more_like_this()` query which is subsequently `filter()`-ed.
93
94  Thanks to @divergentdave for the patch and tests!
95
96- ReStructuredText link format fixes. (#1458) [John Heasly]
97
98- Add note to Backend Support docs about lack of ES 5.X support. (#1457)
99  [John Heasly]
100
101- Replace deprecated Point.get_coords() calls. [Chris Adams]
102
103  This works as far back as Django 1.8, which is the earliest which we
104  support.
105
106  See #1454
107
108- Use setuptools_scm to manage package version numbers. [Chris Adams]
109
110v2.5.1 (2016-10-28)
111-------------------
112
113New
114~~~
115
116- Support for Django 1.10. [Chris Adams]
117
118  Thanks to Morgan Aubert (@ellmetha) for the patch
119
120  Closes #1434
121  Closes #1437
122  Closes #1445
123
124Fix
125~~~
126
127- Contains filter, add endswith filter. [Antony]
128
129  * `__contains` now works in a more intuitive manner (the previous behaviour remains the default for `=` shortcut queries and can be requested explicitly with `__content`)
130  * `__endswith` is now supported as the logical counterpart to `__startswith`
131
132  Thanks to @antonyr for the patch and @sebslomski for code review and testing.
133
134Other
135~~~~~
136
137- V2.5.1. [Chris Adams]
138
139- Add support for Django 1.10 (refs: #1437, #1434) [Morgan Aubert]
140
141- Docs: fix Sphinx hierarchy issue. [Chris Adams]
142
143- Fix multiprocessing regression in update_index. [Chris Adams]
144
145  4e1e2e1c5df1ed1c5432b9d26fcb9dc1abab71f4 introduced a bug because it
146  used a property name which exists on haystack.ConnectionHandler but not
147  the Django ConnectionHandler class it's modeled on. Long-term, we should
148  rename the Haystack class to something like `SearchConnectionHandler`
149  to avoid future confusion.
150
151  Closes #1449
152
153- Doc: cleanup searchindex_api.rst. [Jack Norman]
154
155  Thanks to Jack Norman (@jwnorman) for the patch
156
157- Merge pull request #1444 from jeremycline/master. [Chris Adams]
158
159  Upgrade setuptools in Travis so urllib3-1.18 installs
160
161- Upgrade setuptools in Travis so urllib3-1.18 installs. [Jeremy Cline]
162
163  The version of setuptools in Travis is too old to handle <= as an
164  environment marker.
165
166- Tests: accept Solr/ES config from environment. [Chris Adams]
167
168  This makes it easy to override these values for e.g. running test
169  instances using Docker images with something like this:
170
171  ```
172  TEST_ELASTICSEARCH_1_URL="http://$(docker port elasticsearch-1.7 9200/tcp)/" TEST_SOLR_URL="http://$(docker port solr-6 8983/tcp)/solr/" test_haystack/run_tests.py
173  ```
174
175  See #1408
176
177- Merge pull request #1418 from Alkalit/master. [Steve Byerly]
178
179  Added link for 2.5.x version docs
180
181- Added link for 2.5.x version. [Alexey Kalinin]
182
183- Merge pull request #1432 from farooqaaa/master. [Steve Byerly]
184
185  Added missing `--batch-size` argument for `rebuild_index` management command.
186
187- Added missing --batch-size argument. [Farooq Azam]
188
189- Merge pull request #1036 from merwok/patch-1. [Steve Byerly]
190
191  Documentation update
192
193- Use ellipsis instead of pass. [Éric Araujo]
194
195- Fix code to enable highlighting. [Éric Araujo]
196
197- Merge pull request #1392 from browniebroke/bugfix/doc-error. [Steve
198  Byerly]
199
200  Fix Sphinx errors in the changelog
201
202- Fix Sphinx errors in the changelog. [Bruno Alla]
203
204- Merge pull request #1341 from tymofij/solr-hl-options. [Steve Byerly]
205
206- Merge master > tymofij/solr-hl-options. [Steve Byerly]
207
208- Make solr backend accept both shortened and full-form highlighting
209  options. [Tim Babych]
210
211- Autoprefix 'hl.' for solr options. [Tim Babych]
212
213- Update gitignore to not track test artifacts. [Steve Byerly]
214
215- Merge pull request #1413 from tymofij/patch-2. [Steve Byerly]
216
217  typo: suite -> suit
218
219- Typo: suite -> suit. [Tim Babych]
220
221- Merge pull request #1412 from SteveByerly/highlight_sqs_docs. [Steve
222  Byerly]
223
224  improve sqs highlight docs - illustrate custom parameters
225
226- Improve highlight docs for custom options. [Steve Byerly]
227
228v2.5.0 (2016-07-11)
229-------------------
230
231New
232~~~
233
234- SearchQuerySet.set_spelling_query for custom spellcheck. [Chris Adams]
235
236  This makes it much easier to customize the text sent to the
237  backend search engine for spelling suggestions independently
238  from the actual query being executed.
239
240- Support ManyToManyFields in model_attr lookups. [Arjen Verstoep]
241
242  Thanks to @Terr for the patch
243
244- `update_index` will retry after backend failures. [Gilad Beeri]
245
246  Now `update_index` will retry failures multiple times before aborting
247  with a progressive time delay.
248
249  Thanks to Gilad Beeri (@giladbeeri) for the patch
250
251- `highlight()` accepts custom values on Solr and ES. [Chris Adams]
252
253  This allows the default values to be overriden and arbitrary
254  backend-specific parameters may be provided to Solr or ElasticSearch.
255
256  Thanks to @tymofij for the patch
257
258  Closes #1334
259
260- Allow Routers to return multiple indexes. [Chris Adams]
261
262  Thanks to Hugo Chargois (@hchargois) for the patch
263
264  Closes #1337
265  Closes #934
266
267- Support for newer versions of Whoosh. [Chris Adams]
268
269- Split SearchView.create_response into get_context. [Chris Adams]
270
271  This makes it easy to override the default `create_response` behaviour
272  if you don't want a standard HTML response.
273
274  Thanks @seocam for the patch
275
276  Closes #1338
277
278- Django 1.9 support thanks to Claude Paroz. [Chris Adams]
279
280- Create a changelog using gitchangelog. [Chris Adams]
281
282  This uses `gitchangelog <https://github.com/vaab/gitchangelog>`_ to
283  generate docs/changelog.rst from our Git commit history using the tags
284  for each version. The configuration is currently tracking upstream
285  exactly except for our version tags being prefixed with "v".
286
287Changes
288~~~~~~~
289
290- Support for Solr 5+ spelling suggestion format. [Chris Adams]
291
292- Set install requirements for Django versions. [Chris Adams]
293
294  This will prevent accidentally breaking apps when Django 1.10 is
295  released.
296
297  Closes #1375
298
299- Avoid double-query for queries matching no results. [Chris Adams]
300
301- Update supported/tested Django versions. [Chris Adams]
302
303  * setup.py install_requires uses `>=1.8` to match our current test
304    matrix
305  * Travis allows failures for Django 1.10 so we can start tracking the
306    upcoming release
307
308- Make backend subclassing easier. [Chris Adams]
309
310  This change allows the backend build_search_kwargs to
311  accept arbitrary extra arguments, making life easier for authors of `SearchQuery` or `SearchBackend` subclasses when they can directly pass a value which is directly supported by the backend search client.
312
313- Update_index logging & multiprocessing improvements. [Chris Adams]
314
315  * Since older versions of Python are no longer supported we no
316    longer conditionally import multiprocessing (see #1001)
317  * Use multiprocessing.log_to_stderr for all messages
318  * Remove previously-disabled use of the multiprocessing workers for index removals, allowing the worker code to be simplified
319
320- Moved signal processor loading to app_config.ready. [Chris Adams]
321
322  Thanks to @claudep for the patch
323
324  Closes #1260
325
326- Handle `__in=[]` gracefully on Solr. [Chris Adams]
327
328  This commit avoids the need to check whether a list is empty to avoid an
329  error when using it for an `__in` filter.
330
331  Closes #358
332  Closes #1311
333
334Fix
335~~~
336
337- Attribute resolution on models which have a property named `all`
338  (#1405) [Henrique Chehad]
339
340  Thanks to Henrique Chehad (@henriquechehad) for the patch
341
342  Closes #1404
343
344- Tests will fall back to the Apache archive server. [Chris Adams]
345
346  The Apache 4.10.4 release was quietly removed from the mirrors without a
347  redirect. Until we have time to add newer Solr releases to the test
348  suite we'll download from the archive and let the Travis build cache
349  store it.
350
351- Whoosh backend support for RAM_STORE (closes #1386) [Martin Owens]
352
353  Thanks to @doctormo for the patch
354
355- Unsafe update_worker multiprocessing sessions. [Chris Adams]
356
357  The `update_index` management command does not handle the
358  `multiprocessing` environment safely. On POSIX systems,
359  `multiprocessing` uses `fork()` which means that when called in a
360  context such as the test suite where the connection has already been
361  used some backends like pysolr or ElasticSearch may have an option
362  socket connected to the search server and that leaves a potential race
363  condition where HTTP requests are interleaved, producing unexpected
364  errors.
365
366  This commit resets the backend connection inside the workers and has
367  been stable across hundreds of runs, unlike the current situation where
368  a single-digit number of runs would almost certainly have at least one
369  failure.
370
371  Other improvements:
372  * Improved sanity checks for indexed documents in management
373    command test suite. This wasn’t actually the cause of the
374    problem above but since I wrote it while tracking down the
375    real problem there’s no reason not to use it.
376  * update_index now checks that each block dispatched was
377    executed to catch any possible silent failures.
378
379  Closes #1376
380  See #1001
381
382- Tests support PyPy. [Chris Adams]
383
384  PyPy has an optimization which causes it to call __len__ when running a
385  list comprehension, which is the same thing Python does for
386  `list(iterable)`. This commit simply changes the test code to always use
387  `list` the PyPy behaviour matches CPython.
388
389- Avoid an extra query on empty spelling suggestions. [Chris Adams]
390
391  None was being used as a placeholder to test whether to run
392  a spelling suggestion query but was also a possible response
393  when the backend didn’t return a suggestion, which meant
394  that calling `spelling_suggestion()` could run a duplicate
395  query.
396
397- MultiValueField issues with single value (#1364) [Arjen Verstoep]
398
399  Thanks to @terr for the patch!
400
401- Queryset slicing and reduced code duplication. [Craig de Stigter]
402
403  Now pagination will not lazy-load all earlier pages before returning the
404  result.
405
406  Thanks to @craigds for the patch
407
408  Closes #1269
409  Closes #960
410
411- Handle negative timestamps returned from ES. [Chris Adams]
412
413  Elastic search can return negative timestamps for histograms if the
414  dates are pre-1970. This PR properly handles these pre-1970 dates.
415
416  Thanks to @speedplane for the patch
417
418  Closes #1239
419
420- SearchMixin allows form initial values. [Chris Adams]
421
422  Thanks to @ahoho for the patch
423
424  Closes #1319
425
426- Graceful handling of empty __in= lists on ElasticSearch. [Chris Adams]
427
428  Thanks to @boulderdave for the ES version of #1311
429
430  Closes #1335
431
432Other
433~~~~~
434
435- Docs: update unsupported backends notes. [Chris Adams]
436
437  * Officially suggest developing backends as separate projects
438  * Recommend Sphinx users consider django-sphinxql
439
440- V2.5.0. [Chris Adams]
441
442- Bump version to 2.5.dev2. [Chris Adams]
443
444- AUTHORS. [Tim Babych]
445
446- Expand my username into name in changelog.txt. [Tim Babych]
447
448- Corrected non-ascii characters in comments. (#1390) [Mark Walker]
449
450- Add lower and upper bounds for django versions. [Simon Hanna]
451
452- Convert readthedocs link for their .org -> .io migration for hosted
453  projects. [Adam Chainz]
454
455  As per [their blog post of the 27th April](https://blog.readthedocs.com/securing-subdomains/) ‘Securing subdomains’:
456
457  > Starting today, Read the Docs will start hosting projects from subdomains on the domain readthedocs.io, instead of on readthedocs.org. This change addresses some security concerns around site cookies while hosting user generated data on the same domain as our dashboard.
458
459  Test Plan: Manually visited all the links I’ve modified.
460
461- V2.5.dev1. [Chris Adams]
462
463- Merge pull request #1349 from sbussetti/master. [Chris Adams]
464
465  Fix logging call in `update_index`
466
467- Fixes improper call to logger in mgmt command. [sbussetti]
468
469- Merge pull request #1340 from claudep/manage_commands. [Chris Adams]
470
471  chg: migrate management commands to argparse
472
473- Updated management commands from optparse to argparse. [Claude Paroz]
474
475  This follows Django's same move and prevents deprecation warnings.
476  Thanks Mario César for the initial patch.
477
478- Merge pull request #1225 from gregplaysguitar/patch-1. [Chris Adams]
479
480  fix: correct docstring for ModelSearchForm.get_models !minor
481
482- Fix bogus docstring. [Greg Brown]
483
484- Merge pull request #1328 from claudep/travis19. [Chris Adams]
485
486  Updated test configs to include Django 1.9
487
488- Updated test configs to include Django 1.9. [Claude Paroz]
489
490- Merge pull request #1313 from chrisbrooke/Fix-elasticsearch-2.0-meta-
491  data-changes. [Chris Adams]
492
493- Remove boost which is now unsupported. [Chris Brooke]
494
495- Fix concurrency issues when building UnifiedIndex. [Chris Adams]
496
497  We were getting this error a lot when under load in a multithreaded wsgi
498  environment:
499
500      Model '%s' has more than one 'SearchIndex`` handling it.
501
502  Turns out the connections in haystack.connections and the UnifiedIndex
503  instance were stored globally. However there is a race condition in
504  UnifiedIndex.build() when multiple threads both build() at once,
505  resulting in the above error.
506
507  Best fix is to never share the same engine or UnifiedIndex across
508  multiple threads. This commit does that.
509
510  Closes #959
511  Closes #615
512
513- Load connection routers lazily. [Chris Adams]
514
515  Thanks to Tadas Dailyda (@skirsdeda) for the patch
516
517  Closes #1034
518  Closes #1296
519
520- DateField/DateTimeField accept strings values. [Chris Adams]
521
522  Now the convert method will be called by default when string values are
523  received instead of the normal date/datetime values.
524
525  Closes #1188
526
527- Fix doc ReST warning. [Chris Adams]
528
529- Merge pull request #1297 from martinsvoboda/patch-1. [Sam Peka]
530
531  Highlight elasticsearch 2.X is not supported yet
532
533- Highlight in docs that elasticsearch 2.x is not supported yet. [Martin
534  Svoboda]
535
536- Start updating compatibility notes. [Chris Adams]
537
538  * Deprecate versions of Django which are no longer
539    supported by the Django project team
540  * Update ElasticSearch compatibility messages
541  * Update Travis / Tox support matrix
542
543- Merge pull request #1287 from ses4j/patch-1. [Sam Peka]
544
545  Remove duplicated SITE_ID from test_haystack/settings.py
546
547- Remove redundant SITE_ID which was duplicated twice. [Scott Stafford]
548
549- Add ``fuzzy`` operator to SearchQuerySet. [Chris Adams]
550
551  This exposes the backends’ native fuzzy query support.
552
553  Thanks to Ana Carolina (@anacarolinats) and Steve Bussetti (@sbussetti)
554  for the patch.
555
556- Merge pull request #1281 from itbabu/python35. [Justin Caratzas]
557
558  Add python 3.5 to tests
559
560- Add python 3.5 to tests. [Marco Badan]
561
562  ref: https://docs.djangoproject.com/en/1.9/faq/install/#what-python-version-can-i-use-with-django
563
564- SearchQuerySet: don’t trigger backend access in __repr__ [Chris Adams]
565
566  This can lead to confusing errors or performance issues by
567  triggering backend access at unexpected locations such as
568  logging.
569
570  Closes #1278
571
572- Merge pull request #1276 from mariocesar/patch-1. [Chris Adams]
573
574  Use compatible get_model util to support new django versions
575
576  Thanks to @mariocesar for the patch!
577
578- Reuse haystack custom get model method. [Mario César Señoranis Ayala]
579
580- Removed unused import. [Mario César Señoranis Ayala]
581
582- Use compatible get_model util to support new django versions. [Mario
583  César Señoranis Ayala]
584
585- Merge pull request #1263 from dkarchmer/patch-1. [Chris Adams]
586
587  Update views_and_forms.rst
588
589- Update views_and_forms.rst. [David Karchmer]
590
591  After breaking my head for an hour, I realized the instructions to upgrade to class based views is incorrect. It should indicate that switch from `page` to `page_obj` and not `page_object`
592
593v2.3.2 (2015-11-11)
594-------------------
595
596- V2.3.2 maintenance update. [Chris Adams]
597
598- Fix #1253. [choco]
599
600- V2.3.2 pre-release version bump. [Chris Adams]
601
602- Allow individual records to be skipped while indexing. [Chris Adams]
603
604  Previously there was no easy way to skip specific objects other than
605  filtering the queryset. This change allows a prepare method to raise
606  `SkipDocument` after calling methods or making other checks which cannot
607  easily be expressed as database filters.
608
609  Thanks to Felipe Prenholato (@chronossc) for the patch
610
611  Closes #380
612  Closes #1191
613
614v2.4.1 (2015-10-29)
615-------------------
616
617- V2.4.1. [Chris Adams]
618
619- Minimal changes to the example project to allow test use. [Chris
620  Adams]
621
622- Merge remote-tracking branch 'django-haystack/pr/1261' [Chris Adams]
623
624  The commit in #1252 / #1251 was based on the assumption that the
625  tutorial used the new generic views, which is not yet correct.
626
627  This closes #1261 by restoring the wording and adding some tests to
628  avoid regressions in the future before the tutorial is overhauled.
629
630- Rename 'page_obj' with 'page' in the tutorial, section Search Template
631  as there is no 'page_obj' in the controller and this results giving
632  'No results found' in the search. [bboneva]
633
634- Style cleanup. [Chris Adams]
635
636  * Remove duplicate & unused imports
637  * PEP-8 indentation & whitespace
638  * Use `foo not in bar` instead of `not foo in bar`
639
640- Update backend logging style. [Chris Adams]
641
642  * Make Whoosh message consistent with the other backends
643  * Pass exception info to loggers in except: blocks
644  * PEP-8
645
646- Avoid unsafe default value on backend clear() methods. [Chris Adams]
647
648  Having a mutable structure like a list as a default value is unsafe;
649  this commit changes that to the standard None.
650
651- Merge pull request #1254 from chocobn69/master. [Chris Adams]
652
653  Update for API change in elasticsearch 1.8 (closes #1253)
654
655  Thanks to @chocobn69 for the patch
656
657- Fix #1253. [choco]
658
659- Tests: update Solr launcher for changed mirror format. [Chris Adams]
660
661  The Apache mirror-detection script appears to have changed its response
662  format recently. This change handles that and makes future error
663  messages more explanatory.
664
665- Bump doc version numbers - closes #1105. [Chris Adams]
666
667- Merge pull request #1252 from rhemzo/master. [Chris Adams]
668
669  Update tutorial.rst (closes #1251)
670
671  Thanks to @rhemzo for the patch
672
673- Update tutorial.rst. [rhemzo]
674
675  change page for page_obj
676
677- Merge pull request #1240 from speedplane/improve-cache-fill. [Chris
678  Adams]
679
680  Use a faster implementation of query result cache
681
682- Use a faster implementation of this horrible cache. In my tests it
683  runs much faster and uses far less memory. [speedplane]
684
685- Merge pull request #1149 from lovmat/master. [Chris Adams]
686
687  FacetedSearchMixin bugfixes and improvements
688
689  * Updated documentation & example code
690  * Fixed inheritance chain
691  * Added facet_fields
692
693  Thanks to @lovmat for the patch
694
695- Updated documentation, facet_fields attribute. [lovmat]
696
697- Added facet_fields attribute. [lovmat]
698
699  Makes it easy to include facets into FacetedSearchVIew
700
701- Bugfixes. [lovmat]
702
703- Merge pull request #1232 from dlo/patch-1. [Chris Adams]
704
705  Rename elasticsearch-py to elasticsearch in docs
706
707  Thanks to @dlo for the patch
708
709- Rename elasticsearch-py to elasticsearch in docs. [Dan Loewenherz]
710
711- Update wording in SearchIndex get_model exception. [Chris Adams]
712
713  Thanks to Greg Brown (@gregplaysguitar) for the patch
714
715  Closes #1223
716
717- Corrected exception wording. [Greg Brown]
718
719- Allow failures on Python 2.6. [Chris Adams]
720
721  Some of our test dependencies like Mock no longer support it. Pinning
722  Mock==1.0.1 on Python 2.6 should avoid that failure but the days of
723  Python 2.6 are clearly numbered.
724
725- Travis: stop testing unsupported versions of Django on Python 2.6.
726  [Chris Adams]
727
728- Use Travis’ matrix support rather than tox. [Chris Adams]
729
730  This avoids a layer of build setup and makes the Travis
731  console reports more useful
732
733- Tests: update the test version of Solr in use. [Chris Adams]
734
735  4.7.2 has disappeared from most of the Apache mirrors
736
737v2.4.0 (2015-06-09)
738-------------------
739
740- Release 2.4.0. [Chris Adams]
741
742- Merge pull request #1208 from ShawnMilo/patch-1. [Chris Adams]
743
744  Fix a typo in the faceting docs
745
746- Possible typo fix. [Shawn Milochik]
747
748  It seems that this was meant to be results.
749
750- 2.4.0 release candidate 2. [Chris Adams]
751
752- Fix Django 1.9 deprecation warnings. [Ilan Steemers]
753
754  * replaced get_model with haystack_get_model which returns the right function depending on the Django version
755  * get_haystack_models is now compliant with > Django 1.7
756
757  Closes #1206
758
759- Documentation: update minimum versions of Django, Python. [Chris
760  Adams]
761
762- V2.4.0 release candidate. [Chris Adams]
763
764- Bump version to 2.4.0.dev1. [Chris Adams]
765
766- Travis: remove Django 1.8 from allow_failures. [Chris Adams]
767
768- Tests: update test object creation for Django 1.8. [Chris Adams]
769
770  Several of the field tests previously assigned a related test model
771  instance before saving it::
772
773      mock_tag = MockTag(name='primary')
774      mock = MockModel()
775      mock.tag = mock_tag
776
777  Django 1.8 now validates this dodgy practice and throws an error.
778
779  This commit simply changes it to use `create()` so the mock_tag will
780  have a pk before assignment.
781
782- Update AUTHORS. [Chris Adams]
783
784- Tests: fix deprecated Manager.get_query_set call. [Chris Adams]
785
786- Updating haystack to test against django 1.8. [Chris Adams]
787
788  Updated version of @troygrosfield's patch updating the test-runner for
789  Django 1.8
790
791  Closes #1175
792
793- Travis: allow Django 1.8 failures until officially supported. [Chris
794  Adams]
795
796  See #1175
797
798- Remove support for Django 1.5, add 1.8 to tox/travis. [Chris Adams]
799
800  The Django project does not support 1.5 any more and it's the source of
801  most of our false-positive test failures
802
803- Use db.close_old_connections instead of close_connection. [Chris
804  Adams]
805
806  Django 1.8 removed the `db.close_connection` method.
807
808  Thanks to Alfredo Armanini (@phingage) for the patch
809
810- Fix mistake in calling super TestCase method. [Ben Spaulding]
811
812  Oddly this caused no issue on Django <= 1.7, but it causes numerous
813  errors on Django 1.8.
814
815- Correct unittest imports from commit e37c1f3. [Ben Spaulding]
816
817- Prefer stdlib unittest over Django's unittest2. [Ben Spaulding]
818
819  There is no need to fallback to importing unittest2 because Django 1.5
820  is the oldest Django we support, so django.utils.unittest is guaranteed
821  to exist.
822
823- Prefer stdlib OrderedDict over Django's SortedDict. [Ben Spaulding]
824
825  The two are not exactly they same, but they are equivalent for
826  Haystack's needs.
827
828- Prefer stdlib importlib over Django's included version. [Ben
829  Spaulding]
830
831  The app_loading module had to shuffle things a bit. When it was
832  importing the function it raised a [RuntimeError][]. Simply importing
833  the module resolved that.
834
835  [RuntimeError]: https://gist.github.com/benspaulding/f36eaf483573f8e5f777
836
837- Docs: explain how field boosting interacts with filter. [Chris Adams]
838
839  Thanks to @amjoconn for contributing a doc update to help newcomers
840
841  Closes #1043
842
843- Add tests for values/values_list slicing. [Chris Adams]
844
845  This confirms that #1019 is fixed
846
847- Update_index: avoid gaps in removal logic. [Chris Adams]
848
849  The original logic did not account for the way removing records
850  interfered with the pagination logic.
851
852  Closes #1194
853
854- Update_index: don't use workers to remove stale records. [Chris Adams]
855
856  There was only minimal gain to this because, unlike indexing, removal is
857  a simple bulk operation limited by the search engine.
858
859  See #1194
860  See #1201
861
862- Remove lxml dependency. [Chris Adams]
863
864  pysolr 3.3.2+ no longer requires lxml, which saves a significant install
865  dependency
866
867- Allow individual records to be skipped while indexing. [Chris Adams]
868
869  Previously there was no easy way to skip specific objects other than
870  filtering the queryset. This change allows a prepare method to raise
871  `SkipDocument` after calling methods or making other checks which cannot
872  easily be expressed as database filters.
873
874  Thanks to Felipe Prenholato (@chronossc) for the patch
875
876  Closes #380
877  Closes #1191
878
879- Update_index: avoid "MySQL has gone away error" with workers. [Eric
880  Bressler (Platform)]
881
882  This fixes an issue with a stale database connection being passed to
883  a multiprocessing worker when using `--remove`
884
885  Thanks to @ebressler for the patch
886
887  Closes #1201
888
889- Depend on pysolr 3.3.1. [Chris Adams]
890
891- Start-solr-test-server: avoid Travis dependency. [Chris Adams]
892
893  This will now fall back to the current directory when run outside of our Travis-CI environment
894
895- Fix update_index --remove handling. [Chris Adams]
896
897  * Fix support for custom keys by reusing the stored value rather than
898    regenerating following the default pattern
899  * Batch remove operations using the total number of records
900    in the search index rather than the database
901
902  Closes #1185
903  Closes #1186
904  Closes #1187
905
906- Merge pull request #1177 from paulshannon/patch-1. [Chris Adams]
907
908  Update TravisCI link in README
909
910- Update TravisCI link. [Paul Shannon]
911
912  I think the repo got changed at some point and the old project referenced at travisci doesn't exist anymore...
913
914- Travis: enable containers. [Chris Adams]
915
916  * Move apt-get installs to the addons/apt_packages:
917    http://docs.travis-ci.com/user/apt-packages/
918  * Set `sudo: false` to enable containers:
919    http://docs.travis-ci.com/user/workers/container-based-infrastructure/
920
921- Docs: correct stray GeoDjango doc link. [Chris Adams]
922
923- Document: remove obsolete Whoosh Python 3 warning. [Chris Adams]
924
925  Thanks to @gitaarik for the pull request
926
927  Closes #1154
928  Fixes #1108
929
930- Remove method_decorator backport (closes #1155) [Chris Adams]
931
932  This was no longer used anywhere in the Haystack source or documentation
933
934- Travis: enable APT caching. [Chris Adams]
935
936- Travis: update download caching. [Chris Adams]
937
938- App_loading cleanup. [Chris Adams]
939
940  * Add support for Django 1.7+ AppConfig
941  * Rename internal app_loading functions to have haystack_ prefix to make
942    it immediately obvious that they are not Django utilities and start
943  * Add tests to avoid regressions for apps nested with multiple levels of
944    module hierarchy like `raven.contrib.django.raven_compat`
945  * Refactor app_loading logic to make it easier to remove the legacy
946    compatibility code when we eventually drop support for older versions
947    of Django
948
949  Fixes #1125
950  Fixes #1150
951  Fixes #1152
952  Closes #1153
953
954- Switch defaults closer to Python 3 defaults. [Chris Adams]
955
956  * Add __future__ imports:
957
958  isort --add_import 'from __future__ import absolute_import, division, print_function, unicode_literals'
959
960  * Add source encoding declaration header
961
962- Setup.py: use strict PEP-440 dev version. [Chris Adams]
963
964  The previous version was valid as per PEP-440 but triggers a warning in
965  pkg_resources
966
967- Merge pull request #1146 from kamilmowinski/patch-1. [Chris Adams]
968
969  Fix typo in SearchResult documentation
970
971- Update searchresult_api.rst. [kamilmowinski]
972
973- Merge pull request #1143 from wicol/master. [Chris Adams]
974
975  Fix deprecation warnings in Django 1.6.X (thanks @wicol)
976
977- Fix deprecation warnings in Django 1.6.X. [Wictor]
978
979  Options.model_name was introduced in Django 1.6 together with a deprecation warning:
980  https://github.com/django/django/commit/ec469ade2b04b94bfeb59fb0fc7d9300470be615
981
982- Travis: move tox setup to before_script. [Chris Adams]
983
984  This should cause dependency installation problems to show up as build
985  errors rather than outright failures
986
987- Update ElasticSearch defaults to allow autocompleting numbers. [Chris
988  Adams]
989
990  Previously the defaults for ElasticSearch used the `lowercase`
991  tokenizer, which prevented numbers from being autocompleted.
992
993  Thanks to Phill Tornroth (@phill-tornroth) for contributing a patch
994  which changes the default settings to use the `standard` tokenizer
995  with the `lowercase` filter
996
997  Closes #1056
998
999- Update documentation for new class-based views. [Chris Adams]
1000
1001  Thanks to @troygrosfield for the pull-request
1002
1003  Closes #1139
1004  Closes #1133
1005  See #1130
1006
1007- Added documentation for configuring facet behaviour. [Chris Adams]
1008
1009  Thanks to Philippe Luickx for the contribution
1010
1011  Closes #1111
1012
1013- UnifiedIndex has a stable interface to get all indexes. [Chris Adams]
1014
1015  Previously it was possible for UnifiedIndexes.indexes to be empty when
1016  called before the list had been populated. This change deprecates
1017  accessing `.indexes` directly in favor of a `get_indexes()` accessor
1018  which will call `self.build()` first if necessary.
1019
1020  Thanks to Phill Tornroth for the patch and tests.
1021
1022  Closes #851
1023
1024- Add support for SQ in SearchQuerySet.narrow() (closes #980) [Chris
1025  Adams]
1026
1027  Thanks to Andrei Fokau (@andreif) for the patch and tests
1028
1029- Disable multiprocessing on Python 2.6 (see #1001) [Chris Adams]
1030
1031  multiprocessing.Pool.join() hangs reliably on Python 2.6 but
1032  not any later version tested. Since this is an optional
1033  feature we’ll simply disable it
1034
1035- Bump version number to 2.4.0-dev. [Chris Adams]
1036
1037- Update_index: wait for all pool workers to finish. [Chris Adams]
1038
1039  There was a race condition where update_index() would return
1040  before all of the workers had finished updating Solr. This
1041  manifested itself most frequently as Travis failures
1042  for the multiprocessing test (see #1001).
1043
1044- Tests: Fix ElasticSearch index setup (see #1093) [Chris Adams]
1045
1046  Previously when clear_elasticsearch_index() was called to
1047  reset the tests, this could produce confusing results
1048  because it cleared the mappings without resetting the
1049  backend’s setup_complete status and thus fields which were
1050  expected to have a specific type would end up being inferred
1051
1052  With this changed test_regression_proper_start_offsets and
1053  test_more_like_this no longer fail
1054
1055- Update rebuild_index --nocommit handling and add tests. [Chris Adams]
1056
1057  rebuild_index builds its option list by combining the options from
1058  clear_index and update_index. This previously had a manual exclude list
1059  for options which were present in both commands to avoid conflicts but
1060  the nocommit option wasn't in that list.
1061
1062  This wasn't tested because our test suite uses call_command rather than
1063  invoking the option parser directly.
1064
1065  This commit also adds tests to confirm that --nocommit will actually
1066  pass commit=False to clear_index and update_index.
1067
1068  Closes #1140
1069  See #1090
1070
1071- Support ElasticSearch 1.x distance filter syntax (closes #1003) [Chris
1072  Adams]
1073
1074  The elasticsearch 1.0 release was backwards incompatible
1075  with our previous usage.
1076
1077  Thanks to @dulaccc for the patch adding support.
1078
1079- Docs: add Github style guide link to pull request instructions. [Chris
1080  Adams]
1081
1082  The recent Github blog post makes a number of good points:
1083
1084  https://github.com/blog/1943-how-to-write-the-perfect-pull-request
1085
1086- Fixed exception message when resolving model_attr. [Wictor]
1087
1088  This fixes the error message displayed when model_attr references an
1089  unknown attribute.
1090
1091  Thanks to @wicol for the patch
1092
1093  Closes #1094
1094
1095- Compatibility with Django 1.7 app loader (see #1097) [Chris Adams]
1096
1097  * Added wrapper around get_model, so that Django 1.7 uses the new app
1098    loading mechanism.
1099  * Added extra model check to prevent that a simple module is treated as
1100    model.
1101
1102  Thanks to Dirk Eschler (@deschler) for the patch.
1103
1104- Fix index_fieldname to match documentation (closes #825) [Chris Adams]
1105
1106  @jarig contributed a fix to ensure that index_fieldname renaming does
1107  not interfere with using the field name declared on the index.
1108
1109- Add tests for Solr/ES spatial order_by. [Chris Adams]
1110
1111  This exists primarily to avoid the possibility of breaking
1112  compatibility with the inconsistent lat, lon ordering used
1113  by Django, Solr and ElasticSearch.
1114
1115- Remove undocumented `order_by_distance` [Chris Adams]
1116
1117  This path was an undocumented artifact of the original
1118  geospatial feature-branch back in the 1.X era. It wasn’t
1119  documented and is completely covered by the documented API.
1120
1121- ElasticSearch tests: PEP-8 cleanup. [Chris Adams]
1122
1123- Implement managers tests for spatial features. [Chris Adams]
1124
1125  This is largely shadowed by the actual spatial tests but it
1126  avoids surprises on the query generation
1127
1128  * Minor PEP-8
1129
1130- Remove unreferenced add_spatial methods. [Chris Adams]
1131
1132  SolrSearchQuery and ElasticsearchSearchQuery both defined
1133  an `add_spatial` method which was neither called nor
1134  documented.
1135
1136- Remove legacy httplib/httplib2 references. [Chris Adams]
1137
1138  We’ve actually delegated the actual work to requests but the
1139  docs & tests had stale references
1140
1141- Tests: remove legacy spatial backend code. [Chris Adams]
1142
1143  This has never run since the solr_native_distance backend
1144  did not exist and thus the check always failed silently
1145
1146- ElasticSearch backend: minor PEP-8 cleanup. [Chris Adams]
1147
1148- Get-solr-download-url: fix Python 3 import path. [Chris Adams]
1149
1150  This allows the scripts to run on systems where Python 3 is
1151  the default version
1152
1153- Merge pull request #1130 from troygrosfield/master. [Chris Adams]
1154
1155  Added generic class based search views
1156
1157  (thanks @troygrosfield)
1158
1159- Removed "expectedFailure". [Troy Grosfield]
1160
1161- Minor update. [Troy Grosfield]
1162
1163- Added tests for the generic search view. [Troy Grosfield]
1164
1165- Hopefully last fix for django version checking. [Troy Grosfield]
1166
1167- Fix for django version check. [Troy Grosfield]
1168
1169- Adding fix for previously test for django 1.7. [Troy Grosfield]
1170
1171- Adding py34-django1.7 to travis. [Troy Grosfield]
1172
1173- Test for the elasticsearch client. [Troy Grosfield]
1174
1175- Added unicode_literals import for py 2/3 compat. [Troy Grosfield]
1176
1177- Added generic class based search views. [Troy Grosfield]
1178
1179- Merge pull request #1101 from iElectric/nothandledclass. [Chris Adams]
1180
1181  Report correct class when raising NotHandled
1182
1183- Report correct class when raising NotHandled. [Domen Kožar]
1184
1185- Merge pull request #1090 from andrewschoen/feature/no-commit-flag.
1186  [Chris Adams]
1187
1188  Adds a --nocommit arg to the update_index, clear_index and rebuild_index management command.
1189
1190- Adds a --nocommit arg to the update_index, clear_index and
1191  rebuild_index management commands. [Andrew Schoen]
1192
1193- Merge pull request #1103 from pkafei/master. [Chris Adams]
1194
1195  Update documentation to reference Solr 4.x
1196
1197- Changed link to official archive site. [Portia Burton]
1198
1199- Added path to schema.xml. [Portia Burton]
1200
1201- Added latest version of Solr to documentation example. [Portia Burton]
1202
1203- Update ElasticSearch version requirements. [Chris Adams]
1204
1205- Elasticsearch's python api by default has _source set to False, this
1206  causes keyerror mentioned in bug #1019. [xsamurai]
1207
1208- Solr: clear() won’t call optimize when commit=False. [Chris Adams]
1209
1210  An optimize will trigger a commit implicitly so we’ll avoid
1211  calling it when the user has requested not to commit
1212
1213- Bumped __version__ (closes #1112) [Dan Watson]
1214
1215- Travis: allow PyPy builds to fail. [Chris Adams]
1216
1217  This is currently unstable and it's not a first-class supported platform
1218  yet
1219
1220- Tests: fix Solr server tarball test. [Chris Adams]
1221
1222  On a clean Travis instance, the tarball won't exist
1223
1224- Tests: have Solr test server startup script purge corrupt tarballs.
1225  [Chris Adams]
1226
1227  This avoids tests failing if a partial download is cached by Travis
1228
1229- Merge pull request #1084 from streeter/admin-mixin. [Daniel Lindsley]
1230
1231  Document and add an admin mixin
1232
1233- Document support for searching in the Django admin. [Chris Streeter]
1234
1235- Add some spacing. [Chris Streeter]
1236
1237- Create an admin mixin for external use. [Chris Streeter]
1238
1239  There are cases where one might have a different base admin class, and
1240  wants to use the search features in the admin as well. Creating a mixin
1241  makes this a bit cleaner.
1242
1243v2.3.1 (2014-09-22)
1244-------------------
1245
1246- V2.3.1. [Chris Adams]
1247
1248- Tolerate non-importable apps like django-debug-toolbar. [Chris Adams]
1249
1250  If your installed app isn't even a valid Python module, haystack will
1251  issue a warning but continue.
1252
1253  Thanks to @gojomo for the patch
1254
1255  Closes #1074
1256  Closes #1075
1257
1258- Allow apps without models.py on Django <1.7. [Chris Adams]
1259
1260  This wasn't officially supported by Django prior to 1.7 but is used by
1261  some third-party apps such as Grappelli
1262
1263  This commit adds a somewhat contrived test app to avoid future
1264  regressions by ensuring that the test suite always has an application
1265  installed which does not have models.py
1266
1267  See #1073
1268
1269v2.3.0 (2014-09-19)
1270-------------------
1271
1272- Travis: Enable IRC notifications. [Chris Adams]
1273
1274- Fix app loading call signature. [Chris Adams]
1275
1276  Updated code from #1016 to ensure that get_models always
1277  returns a list (previously on Django 1.7 it would return
1278  the bare model when called with an argument of the form
1279  `app.modelname`)
1280
1281  Add some basic tests
1282
1283- App loading: use ImproperlyConfigured for bogus app names. [Chris
1284  Adams]
1285
1286  This never worked but we’ll be more consistent and return
1287  ImproperlyConfigured instead of a generic LookupError
1288
1289- App Loading: don’t suppress app-registry related exceptions. [Chris
1290  Adams]
1291
1292  This is just asking for trouble in the future. If someone comes up with
1293  an edge case, we should add a test for it
1294
1295- Remove Django version pin from install_requires. [Chris Adams]
1296
1297- Django 1.7 support for app discovery. [Chris Adams]
1298
1299  * Refactored @Xaroth’s patch from #1015 into a separate utils
1300    module
1301  * PEP-8 cleanup
1302
1303- Start the process of updating for v2.3 release. [Chris Adams]
1304
1305- Django 1.7 compatibility for model loading. [Chris Adams]
1306
1307  This refactors the previous use of model _meta.module_name and updates
1308  the tests so the previous change can be tested safely.
1309
1310  Closes #981
1311  Closes #982
1312
1313- Update tox Django version pins. [Chris Adams]
1314
1315- Mark expected failures for Django 1.7 (see #1069) [Chris Adams]
1316
1317- Django 1.7: ensure that the app registry is ready before tests are
1318  loaded. [Chris Adams]
1319
1320  The remaining test failures are due to some of the oddities in model
1321  mocking, which can be solved by overhauling the way we do tests and
1322  mocks.
1323
1324- Tests: Whoosh test overhaul. [Chris Adams]
1325
1326  * Move repetitive filesystem reset logic into WhooshTestCase which
1327    cleans up after itself
1328  * Use mkdtemp instead of littering up the current directory with a
1329    'tmp' subdirectory
1330  * Use skipIf rather than expectFailure on test_writable to disable
1331    it only when STORAGE=ram rather than always
1332
1333- Unpin elasticsearch library version for testing. [Chris Adams]
1334
1335- Tests: add MIDDLEWARE_CLASSES for Django 1.7. [Chris Adams]
1336
1337- Use get_model_ct_tuple to generate template name. [Chris Adams]
1338
1339- Refactor simple_backend to use get_model_ct_tuple. [Chris Adams]
1340
1341- Haystack admin: refactor to use get_model_ct_tuple. [Chris Adams]
1342
1343- Consolidate model meta references to use get_model_ct (see #981)
1344  [Chris Adams]
1345
1346  This use of a semi-public Django interface will break in Django 1.7
1347  and we can start preparing by using the existing
1348  haystack.utils.get_model_ct function instead of directly accessing
1349  it everywhere.
1350
1351- Refactor get_model_ct to handle Django 1.7, add tuple version. [Chris
1352  Adams]
1353
1354  We have a mix of model _meta access which usually expects strings but in
1355  a few places needs raw values. This change adds support for Django 1.7
1356  (see https://code.djangoproject.com/ticket/19689) and allows raw tuple
1357  access to handle other needs in the codebase
1358
1359- Add Django 1.7 warning to Sphinx docs as well. [Chris Adams]
1360
1361v2.2.1 (2014-09-03)
1362-------------------
1363
1364- Mark 2.2.X as incompatible with Django 1.7. [Chris Adams]
1365
1366- Tests: don't suppress Solr stderr logging. [Chris Adams]
1367
1368  This will make easier to tell why Solr sometimes goes away on Travis
1369
1370- Update Travis & Tox config. [Chris Adams]
1371
1372  * Tox: wait for Solr to start before running tests
1373  * Travis: allow solr & pip downloads to be cached
1374  * Travis now uses start-solr-test-server.sh instead of travis-solr
1375  * Test Solr configuration uses port 9001 universally as per the
1376    documentation
1377  * Change start-solr-test-server.sh to change into its containing
1378    directory, which also allows us to remove the realpath dependency
1379  * Test Solr invocation matches pysolr
1380      * Use get-solr-download-url script to pick a faster mirror
1381      * Upgrade to Solr 4.7.2
1382
1383- Travis, Tox: add Django 1.7 targets. [Chris Adams]
1384
1385- Merge pull request #1055 from andreif/feature/realpath-fallback-osx.
1386  [Chris Adams]
1387
1388- Fallback to pwd if realpath is not available. [Andrei Fokau]
1389
1390- Merge pull request #1053 from gandalfar/patch-1. [Chris Adams]
1391
1392- Update example for Faceting to reference page.object_list. [Jure
1393  Cuhalev]
1394
1395  Instead of `results` - ref #1052
1396
1397- Add PyPy targets to Tox & Travis. [Chris Adams]
1398
1399  Closes #1049
1400
1401- Merge pull request #1044 from areski/patch-1. [Chris Adams]
1402
1403  Update Xapian install instructions (thanks @areski)
1404
1405- Update Xapian install. [Areski Belaid]
1406
1407- Docs: fix signal processors link in searchindex_api. [Chris Adams]
1408
1409  Correct a typo in b676b17dbc4b29275a019417e7f19f531740f05e
1410
1411- Merge pull request #1050 from jogwen/patch-2. [Chris Adams]
1412
1413- Link to 'signal processors' [Joanna Paulger]
1414
1415- Merge pull request #1047 from g3rd/patch-1. [Chris Adams]
1416
1417  Update the installing search engine documentation URL (thanks @g3rd)
1418
1419- Fixed the installing search engine doc URL. [Chad Shrock]
1420
1421- Merge pull request #1025 from reinout/patch-1. [Chris Adams]
1422
1423  Fixed typo in templatetag docs example (thanks to @reinout)
1424
1425- Fixed typo in example. [Reinout van Rees]
1426
1427  It should be `css_class` in the template tag example instead of just `class`. (It is mentioned correctly in the syntax line earlier).
1428
1429v2.2.0 (2014-08-03)
1430-------------------
1431
1432- Release v2.2.0. [Chris Adams]
1433
1434- Test refactor - merge all the tests into one test suite (closes #951)
1435  [Chris Adams]
1436
1437  Major refactor by @honzakral which stabilized the test suite, makes it easier to run and add new tests and
1438  somewhat faster, too.
1439
1440  * Merged all the tests
1441  * Mark tests as skipped when a backend is not available (e.g. no ElasticSearch or Solr connection)
1442  * Massively simplified test runner (``python setup.py test``)
1443
1444  Minor updates:
1445  * Travis:
1446      - Test Python 3.4
1447      - Use Solr 4.6.1
1448  * Simplified legacy test code which can now be replaced by the test utilities in newer versions of Django
1449  * Update ElasticSearch client & tests for ES 1.0+
1450  * Add option for SearchModelAdmin to specify the haystack connection to use
1451  * Fixed a bug with RelatedSearchQuerySet caching using multiple instances (429d234)
1452
1453- RelatedSearchQuerySet: move class globals to instance properties.
1454  [Chris Adams]
1455
1456  This caused obvious failures in the test suite and presumably
1457  elsewhere when multiple RelatedSearchQuerySet instances were in use
1458
1459- Merge pull request #1032 from maikhoepfel/patch-1. [Justin Caratzas]
1460
1461  Drop unused variable when post-processing results
1462
1463- Drop unused variable when post-processing results. [Maik Hoepfel]
1464
1465  original_results is not used in either method, and can be safely removed.
1466
1467- 404 when initially retrieving mappings is ok. [Honza Král]
1468
1469- Ignore 400 (index already exists) when creating an index in
1470  Elasticsearch. [Honza Král]
1471
1472- ElasticSearch: update clear() for 1.x+ syntax. [Chris Adams]
1473
1474  As per http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html this should be nested inside a
1475  top-level query block:
1476
1477  {“query”: {“query_string”: …}}
1478
1479- Add setup.cfg for common linters. [Chris Adams]
1480
1481- ElasticSearch: avoid KeyError for empty spelling. [Chris Adams]
1482
1483  It was possible to get a KeyError when spelling suggestions were
1484  requested but no suggestions are returned by the backend.
1485
1486  Thanks to Steven Skoczen (@skoczen) for the patch
1487
1488- Merge pull request #970 from tobych/patch-3. [Justin Caratzas]
1489
1490  Improve punctuation in super-scary YMMV warning
1491
1492- Improve punctuation in super-scary YMMV warning. [Toby Champion]
1493
1494- Merge pull request #969 from tobych/patch-2. [Justin Caratzas]
1495
1496  Fix typo; clarify purpose of search template
1497
1498- Fix typo; clarify purpose of search template. [Toby Champion]
1499
1500- Merge pull request #968 from tobych/patch-1. [Justin Caratzas]
1501
1502  Fix possessive "its" in tutorial.rst
1503
1504- Fix possessive "its" [Toby Champion]
1505
1506- Merge pull request #938 from Mbosco/patch-1. [Daniel Lindsley]
1507
1508  Update tutorial.rst
1509
1510- Update tutorial.rst. [BoscoMW]
1511
1512- Fix logging call in SQS post_process_results (see #648) [Chris Adams]
1513
1514  This was used in an except: handler and would only be executed when a
1515  load_all() queryset retrieved a model which wasn't registered with the
1516  index.
1517
1518- Merge pull request #946 from gkaplan/spatial-docs-fix. [Daniel
1519  Lindsley]
1520
1521  Small docs fix for spatial search example code
1522
1523- Fix typo with instantiating Distance units. [Graham Kaplan]
1524
1525- Solr backend: correct usage of pysolr delete. [Chris Adams]
1526
1527  We use HAYSTACK_ID_FIELD in other places but the value passed to
1528  pysolr's delete() method must use the keyword argument ``id``:
1529
1530  https://github.com/toastdriven/pysolr/blob/v3.1.0/pysolr.py#L756
1531
1532  Although the value is passed to Solr an XML tag named ``<id>`` it will
1533  always be checked against the actual ``uniqueKey`` field even if it uses
1534  a custom name:
1535
1536  https://wiki.apache.org/solr/UpdateXmlMessages#A.22delete.22_documents_by_ID_and_by_Query
1537
1538  Closes #943
1539
1540- Add a note on elasticsearch-py versioning with regards to 1.0. [Honza
1541  Král]
1542
1543- Ignore 404 when removing a document from elasticsearch. [Honza Král]
1544
1545  Fixes #942
1546
1547- Ignore missing index during .clear() [Honza Král]
1548
1549  404 in indices.delete can only mean that the index is there, no issue
1550  for a delete operation
1551
1552  Fixes #647
1553
1554- Tests: remove legacy targets. [Chris Adams]
1555
1556  * Django 1.4 is no longer supported as per the documentation
1557  * Travis: use Python 3.3 targets instead of 3.2
1558
1559- Tests: update pysolr requirement to 3.1.1. [Chris Adams]
1560
1561  3.1.1 shipped a fix for a change in the Solr response format for the
1562  content extraction handler
1563
1564- Merge pull request #888 from acdha/888-solr-field-list-regression.
1565  [Chris Adams]
1566
1567  Solr / ElasticSearch backends: restore run() kwargs handling
1568
1569  This fixes an earlier regression which did not break functionality but made `.values()` and `.values_list()` much less of an optimization than intended.
1570
1571  #925 will be a more comprehensive refactor but this is enough of a performance win to be worth including if a point release happens before #925 lands.
1572
1573- ElasticSearch backend: run() kwargs are passed directly to search
1574  backend. [Chris Adams]
1575
1576  This allows customization by subclasses and also fixes #888
1577  by ensuring that the custom field list prepared by
1578  `ValuesQuerySet` and `ValuesListQuerySet` is actually used.
1579
1580- Solr backend: run() kwargs are passed directly to search backend.
1581  [Chris Adams]
1582
1583  This allows customization by subclasses and also fixes #888
1584  by ensuring that the custom field list prepared by
1585  `ValuesQuerySet` and `ValuesListQuerySet` is actually used.
1586
1587- Tests: skip Solr content extraction with old PySolr. [Chris Adams]
1588
1589  Until pysolr 3.1.1 ships there's no point in running the Solr content
1590  extraction tests because they'll fail:
1591
1592  https://github.com/toastdriven/pysolr/pull/104
1593
1594- Make sure DJANGO_CT and DJANGO_ID fields are not analyzed. [Honza
1595  Král]
1596
1597- No need to store fields separately in elasticsearch. [Honza Král]
1598
1599  That will justlead to fields being stored once - as part of _source as
1600  well as in separate index that would never be used by haystack (would be
1601  used only in special cases when requesting just that field, which can
1602  be, with minimal overhead, still just extracted from the _source as it
1603  is).
1604
1605- Remove extra code. [Honza Král]
1606
1607- Simplify mappings for elasticsearch fields. [Honza Král]
1608
1609  - don't specify defaults (index:analyzed for strings, boost: 1.0)
1610  - omit extra settings that have little or negative effects
1611    (term_vector:with_positions_offsets)
1612  - only use type-specific settings (not_analyzed makes no sense for
1613    non-string types)
1614
1615  Fixes #866
1616
1617- Add narrow queries as individual subfilter to promote caching. [Honza
1618  Král]
1619
1620  Each narrow query will be cached individually which means more cache
1621  reuse
1622
1623- Doc formatting fix. [Honza Král]
1624
1625- Allow users to pass in additional kwargs to Solr and Elasticsearch
1626  backends. [Honza Král]
1627
1628  Fixes #674, #862
1629
1630- Whoosh: allow multiple order_by() fields. [Chris Adams]
1631
1632  The Whoosh backend previously prevented the use of more than one
1633  order_by field. It now allows multiple fields as long as every field
1634  uses the same sort direction.
1635
1636  Thanks to @qris, @overflow for the patch
1637
1638  Closes #627
1639  Closes #919
1640
1641- Fix bounding box calculation for spatial queries (closes #718) [Chris
1642  Adams]
1643
1644  Thanks @jasisz for the fix
1645
1646- Docs: fix ReST syntax error in searchqueryset_api.rst. [Chris Adams]
1647
1648- Tests: update test_more_like_this for Solr 4.6. [Chris Adams]
1649
1650- Tests: update test_quotes_regression exception test. [Chris Adams]
1651
1652  This was previously relying on the assumption that a query would not
1653  match, which is Solr version dependent, rather than simply
1654  confirming that no exception is raised
1655
1656- Tests: update Solr schema to match current build_solr_schema. [Chris
1657  Adams]
1658
1659  * Added fields used in spatial tests: location, username, comment
1660  * Updated schema for recent Solr
1661  * Ran `xmllint --c14n "$*" | xmllint --format --encode "utf-8" -`
1662
1663- Tests: update requirements to match tox. [Chris Adams]
1664
1665- Move test Solr instructions into a script. [Chris Adams]
1666
1667  These will just rot horribly if they're not actually executed on a
1668  regular basis…
1669
1670- Merge pull request #907 from gam-phon/patch-1. [Chris Adams]
1671
1672- Fix url for solr 3.5.0. [Yaser Alraddadi]
1673
1674- Merge pull request #775 from stefanw/avoid-pks-seen-on-update. [Justin
1675  Caratzas]
1676
1677  Avoid unnecessary, potentially huge db query on index update
1678
1679- Merge branch 'master' into avoid-pks-seen-on-update. [Stefan
1680  Wehrmeyer]
1681
1682  Change smart_text into smart_bytes as in master
1683
1684  Conflicts:
1685  	haystack/management/commands/update_index.py
1686
1687- Upgraded python3 in tox to 3.3. [justin caratzas]
1688
1689  3.3 is a better target for haystack than 3.2, due to PEP414
1690
1691- Merge pull request #885 from HonzaKral/elasticsearch-py. [Justin
1692  Caratzas]
1693
1694  Use elasticsearch-py instead of pyelasticsearch.
1695
1696- Use elasticsearch-py instead of pyelasticsearch. [Honza Král]
1697
1698  elasticsearch-py is the official Python client for Elasticsearch.
1699
1700- Merge pull request #899 from acdha/html5-input-type=search. [Justin
1701  Caratzas]
1702
1703  Search form <input type="search">
1704
1705- Use HTML5 <input type=search> (closes #899) [Chris Adams]
1706
1707- Update travis config so that unit tests will run with latest solr +
1708  elasticsearch. [justin caratzas]
1709
1710- Merge remote-tracking branch 'HonzaKral/filtered_queries' Fixes #886.
1711  [Daniel Lindsley]
1712
1713- Use terms filter for DJANGO_CT, *much* faster. [Honza Král]
1714
1715- Cleaner query composition when it comes to filters in ES. [Honza Král]
1716
1717- Fixed typo in AUTHORS. [justin caratzas]
1718
1719- Added pabluk to AUTHORS. [Pablo SEMINARIO]
1720
1721- Fixed ValueError exception when SILENTLY_FAIL=True. [Pablo SEMINARIO]
1722
1723- Merge pull request #882 from benspaulding/docs/issue-607. [Justin
1724  Caratzas]
1725
1726  Remove bit about SearchQuerySet.load_all_queryset deprecation
1727
1728- Remove bit about SearchQuerySet.load_all_queryset deprecation. [Ben
1729  Spaulding]
1730
1731  That method was entirely removed in commit b8048dc0e9e3.
1732
1733  Closes #607. Thanks to @bradleyayers for the report.
1734
1735- Merge pull request #881 from benspaulding/docs/issue-606. [Justin
1736  Caratzas]
1737
1738  Fix documentation regarding ModelSearchIndex to match current behavior
1739
1740- Fix documentation regarding ModelSearchIndex to match current
1741  behavior. [Ben Spaulding]
1742
1743  Closes #606. Thanks to @bradleyayers for the report.
1744
1745- Fixed #575 & #838, where a change in Whoosh 2.5> required explicitly
1746  setting the Searcher.search() limit to None to restore correct
1747  results. [Keryn Knight]
1748
1749  Thanks to scenable and Shige Abe (typeshige) for
1750  the initial reports, and to scenable for finding
1751  the root issue in Whoosh.
1752
1753- Removed python 1.4 / python 3.2 tox env because thats not possible.
1754  [justin caratzas]
1755
1756  also pinned versions of requirements for testing
1757
1758- Added test for autocomplete whitespace fix. [justin caratzas]
1759
1760- Fixed autocomplete() method: spaces in query. [Ivan Virabyan]
1761
1762- Fixed basepython for tox envs, thanks --showconfig. [justin caratzas]
1763
1764  also, added latest django 1.4 release, which doesn't error out
1765  currently.
1766
1767  Downgraded python3.3 to python3.2, as thats what the lastest debian
1768  stable includes.  I'm working on compiling pypy and python3.3 on the
1769  test box, so those will probably be re-added as time allows.
1770
1771  failing tests: still solr context extraction + spatial
1772
1773- Fixed simple backend for django 1.6, _fields was removed. [justin
1774  caratzas]
1775
1776- [tox] run tests for 1.6, fix test modules so they are found by the new
1777  test runner. [justin caratzas]
1778
1779  These changes are backwards-compatible with django 1.5.  As of this
1780  commit, the only failing tests are the Solr extractraction test, and the
1781  spatial tests.
1782
1783- Switch solr configs to solr 4. [justin caratzas]
1784
1785  almost all tests passing, but spatial not working
1786
1787- Update solr schema template to fix stopwords_en.txt relocation.
1788  [Patrick Altman]
1789
1790  Seems that in versions >3.6 and >4 stopwords_en.txt moved
1791  to a new location. This won't be backwards compatible for
1792  older versions of solr.
1793
1794  Addresses issues #558, #560
1795  In addition, issue #671 references this problem
1796
1797- Pass `using` to index_queryset for update. [bigjust]
1798
1799- Update tox to test pypy, py26, py27, py33, django1.5 and django1.6.
1800  [bigjust]
1801
1802  django 1.6 doesn't actually work yet, but there are other efforts to get that working
1803
1804- Fixed my own spelling test case. How embarrassing. [Dan Watson]
1805
1806- Added a spelling test case for ElasticSearch. [Dan Watson]
1807
1808- More ElasticSearch test fixes. [Dan Watson]
1809
1810- Added some faceting tests for ElasticSearch. [Dan Watson]
1811
1812- Fixed ordering issues in the ElasticSearch tests. [Dan Watson]
1813
1814- Merge remote-tracking branch 'infoxchange/fix-elasticsearch-index-
1815  settings-reset' [Daniel Lindsley]
1816
1817- Test ensuring recreating the index does not remove the mapping.
1818  [Alexey Kotlyarov]
1819
1820- Reset backend state when deleting index. [Alexey Kotlyarov]
1821
1822  Reset setup_complete and existing_mapping when an index is
1823  deleted. This ensures create_index is called later to restore
1824  the settings properly.
1825
1826- Use Django's copy of six. [Dan Watson]
1827
1828- Merge pull request #847 from luisbarrueco/mgmtcmd-fix. [Dan Watson]
1829
1830  Fixed an update_index bug when using multiple connections
1831
1832- Fixed an update_index bug when using multiple connections. [Luis
1833  Barrueco]
1834
1835- Fixed a missed raw_input call on Python 3. [Dan Watson]
1836
1837- Merge pull request #840 from postatum/fix_issue_807. [Justin Caratzas]
1838
1839  Fixed issue #807
1840
1841- Fixed issue #807. [postatum]
1842
1843- Merge pull request #837 from nicholasserra/signals-docs-fix. [Justin
1844  Caratzas]
1845
1846  Tiny docs fix in signal_processors example code
1847
1848- Tiny docs fix in signal_processors example code. [Nicholas Serra]
1849
1850- Merge pull request #413 from phill-tornroth/patch-1. [Justin Caratzas]
1851
1852  Silly little change, I know.. but I actually ran into a case where I acci
1853
1854- Silly little change, I know.. but I actually ran into a case where I
1855  accidentally passed a list of models in without *ing them. When that
1856  happens, we get a string formatting exception (not all arguments were
1857  formatted) instead of the useful "that ain't a model, kid" business.
1858  [Phill Tornroth]
1859
1860- Merge pull request #407 from bmihelac/patch-1. [Justin Caratzas]
1861
1862  Fixed doc, ``query`` is context variable and not in request.
1863
1864- Fixed doc, ``query`` is context variable and not in request.
1865  [bmihelac]
1866
1867- Merge pull request #795 from
1868  davesque/update_excluded_indexes_error_message. [Justin Caratzas]
1869
1870  Improve error message for duplicate index classes
1871
1872- Improve error message for duplicate index classes. [David Sanders]
1873
1874  To my knowledge, the 'HAYSTACK_EXCLUDED_INDEXES' setting is no longer
1875  used.
1876
1877- Started the v2.1.1 work. [Daniel Lindsley]
1878
1879- Avoid unnecessary db query on index update. [Stefan Wehrmeyer]
1880
1881  pks_seen is only needed if objects are removed from
1882  index, so only compute it if necessary.
1883  Improve pks_seen to not build an intermediary list.
1884
1885v2.1.0 (2013-07-28)
1886-------------------
1887
1888- Bumped to v2.1.0! [Daniel Lindsley]
1889
1890- Python 3 support is done, thanks to RevSys & the PSF! Updated
1891  requirements in the docs. [Daniel Lindsley]
1892
1893- Added all the new additions to AUTHORS. [Daniel Lindsley]
1894
1895- Merge branch 'py3' [Daniel Lindsley]
1896
1897- Added Python 3 compatibility notes. [Daniel Lindsley]
1898
1899- Whoosh mostly working under Python 3. See docs for details. [Daniel
1900  Lindsley]
1901
1902- Backported things removed from Django 1.6. [Daniel Lindsley]
1903
1904- Final core changes. [Daniel Lindsley]
1905
1906- Solr tests all but passing under Py3. [Daniel Lindsley]
1907
1908- Elasticsearch tests passing under Python 3. [Daniel Lindsley]
1909
1910  Requires git master (ES 1.0.0 beta) to work properly when using suggestions.
1911
1912- Overrides passing under Py3. [Daniel Lindsley]
1913
1914- Simple backend ported & passing. [Daniel Lindsley]
1915
1916- Whoosh all but fully working under Python 3. [Daniel Lindsley]
1917
1918- Closer on porting ES. [Daniel Lindsley]
1919
1920- Core tests mostly pass on Py 3. \o/ [Daniel Lindsley]
1921
1922  What's left are 3 failures, all ordering issues, where the correct output is present, but ordering is different between Py2 / Py3.
1923
1924- More porting to Py3. [Daniel Lindsley]
1925
1926- Started porting to py3. [Daniel Lindsley]
1927
1928- Merge pull request #821 from knightzero/patch-1. [Justin Caratzas]
1929
1930  Update autocomplete.rst
1931
1932- Update autocomplete.rst. [knightzero]
1933
1934- Merge pull request #744 from trigger-corp/master. [Justin Caratzas]
1935
1936  Allow for document boosting with elasticsearch
1937
1938- Update the current elasticsearch boost test to also test document
1939  boosting. [Connor Dunn]
1940
1941- Map boost field to _boost in elasticsearch. [Connor Dunn]
1942
1943  Means that including a boost field in a document will cause document level boosting.
1944
1945- Added ethurgood to AUTHORS. [Daniel Lindsley]
1946
1947- Add test__to_python for elastisearch backend. [Eric Thurgood]
1948
1949- Fix datetime instantiation in elasticsearch backend's _to_python.
1950  [Eric Thurgood]
1951
1952- Merge pull request #810 from pabluk/minor-docs-fix. [Chris Adams]
1953
1954  Updated description for TIMEOUT setting - thanks @pabluk
1955
1956- Updated description for TIMEOUT setting. [Pablo SEMINARIO]
1957
1958- Updated the backend support docs. Thanks to kezabelle & dimiro1 for
1959  the report! [Daniel Lindsley]
1960
1961- Added haystack-rqueue to "Other Apps". [Daniel Lindsley]
1962
1963- Updated README & index. [Daniel Lindsley]
1964
1965- Added installation instructions. [bigjust]
1966
1967- Merge pull request #556 from h3/master. [Justin Caratzas]
1968
1969  Updated to 'xapian_backend.XapianEngine' docs & example
1970
1971- Updated XapianEngine module path. [h3]
1972
1973- Updated XapianEngine module path. [h3]
1974
1975- Merge pull request #660 from seldon/master. [Justin Caratzas]
1976
1977  Some minor docs fixes
1978
1979- Fixed a few typos in docs. [Lorenzo Franceschini]
1980
1981- Add Educreations to who uses Haystack. [bigjust]
1982
1983- Merge pull request #692 from stephenpaulger/master. [Justin Caratzas]
1984
1985  Change the README link to latest 1.2 release.
1986
1987- Update README.rst. [Stephen Paulger]
1988
1989  Update 1.2.6 link to 1.2.7
1990
1991- Merge pull request #714 from miracle2k/patch-1. [Justin Caratzas]
1992
1993  Note enabling INCLUDE_SPELLING requires a reindex.
1994
1995- Note enabling INCLUDE_SPELLING requires a reindex. [Michael Elsdörfer]
1996
1997- Unicode support in SimpleSearchQuery (closes #793) [slollo]
1998
1999- Merge pull request #790 from andrewschoen/feature/haystack-identifier-
2000  module. [Andrew Schoen]
2001
2002  Added a new setting, HAYSTACK_IDENTIFIER_METHOD, which will allow a cust...
2003
2004- Added a new setting, ``HAYSTACK_IDENTIFIER_METHOD``, which will allow
2005  a custom method to be provided for ``haystack.utils.get_identifier``.
2006  [Schoen]
2007
2008- Fixed an exception log message in elasticsearch backend, and added a
2009  loading test for elasticsearch. [Dan Watson]
2010
2011- Changed exception log message in whoosh backend to use
2012  __class__.__name__ instead of just __name__ (closes #641) [Jeffrey
2013  Tratner]
2014
2015- Further bumped the docs on installing engines. [Daniel Lindsley]
2016
2017- Update docs/installing_search_engines.rst. [Tom Dyson]
2018
2019  grammar, Elasticsearch version and formatting consistency fixes.
2020
2021- Added GroundCity & Docket Alarm to the Who Uses docs. [Daniel
2022  Lindsley]
2023
2024- Started the development on v2.0.1. [Daniel Lindsley]
2025
2026v2.0.0 (2013-05-12)
2027-------------------
2028
2029- Bumped to v2.0.0! [Daniel Lindsley]
2030
2031- Changed how ``Raw`` inputs are handled. Thanks to kylemacfarlane for
2032  the (really good) report. [Daniel Lindsley]
2033
2034- Added a (passing) test trying to verify #545. [Daniel Lindsley]
2035
2036- Fixed a doc example on custom forms. Thanks to GrivIN and benspaulding
2037  for patches. [Daniel Lindsley]
2038
2039- Added a reserved character for Solr (v4+ supports regexes). Thanks to
2040  RealBigB for the initial patch. [Daniel Lindsley]
2041
2042- Merge branch 'master' of github.com:toastdriven/django-haystack.
2043  [Jannis Leidel]
2044
2045- Fixed the stats tests. [Daniel Lindsley]
2046
2047- Adding description of stats support to docs. [Ranjit Chacko]
2048
2049- Adding support for stats queries in Solr. [Ranjit Chacko]
2050
2051- Added tests for the previous kwargs patch. [Daniel Lindsley]
2052
2053- Bug fix to allow object removal without a commit. [Madan Thangavelu]
2054
2055- Do not refresh the index after it has been deleted. [Kevin Tran]
2056
2057- Fixed naming of manager for consistency. [Jannis Leidel]
2058
2059  - renamed `HaystackManager` to `SearchIndexManager`
2060  - renamed `get_query_set` to `get_search_queryset`
2061
2062- Updated the docs on running tests. [Daniel Lindsley]
2063
2064- Merge branch 'madan' [Daniel Lindsley]
2065
2066- Fixed the case where index_name isn't available. [Daniel Lindsley]
2067
2068- Fixing typo to allow manager to switch between different index_labels.
2069  [Madan Thangavelu]
2070
2071- Haystack manager and tests. [Madan Thangavelu]
2072
2073- Removing unwanted spaces. [Madan Thangavelu]
2074
2075- Object query manager for searchindex. [Madan Thangavelu]
2076
2077- Added requirements file for testing. [Daniel Lindsley]
2078
2079- Added a unit test for #786. [Dan Watson]
2080
2081- Fixed a bug when passing "using" to SearchQuerySet (closes #786).
2082  [Rohan Gupta]
2083
2084- Ignore the env directory. [Daniel Lindsley]
2085
2086- Allow for setuptools as well as distutils. [Daniel Lindsley]
2087
2088- Merge pull request #785 from mattdeboard/dev-mailing-list. [Chris
2089  Adams]
2090
2091  Add note directing users to django-haystack-dev mailing list.
2092
2093- Add note directing users to django-haystack-dev mailing list. [Matt
2094  DeBoard]
2095
2096- Spelling suggestions for ElasticSearch (closes #769 and #747) [Dan
2097  Watson]
2098
2099- Added support for sending facet options to the backend (closes #753)
2100  [Dan Watson]
2101
2102- More_like_this: honor .models() restriction. [Chris Adams]
2103
2104  Original patch by @mattdeboard updated to remove test drift since it was
2105  originally submitted
2106
2107  Closes #593
2108  Closes #543
2109
2110- Removed commercial support info. [Daniel Lindsley]
2111
2112- Merge pull request #779 from pombredanne/pep386_docfixes. [Jannis
2113  Leidel]
2114
2115  Update version to 2.0.0b0 in doc conf
2116
2117- Update version to 2.0.0b0 in doc conf .. to redeem myself of the
2118  unlucky #777 minimess. [pombredanne]
2119
2120- Merge pull request #778 from falinsky/patch-1. [Justin Caratzas]
2121
2122  Fix bug in setup.py
2123
2124- Fix bug. [Sergey Falinsky]
2125
2126- Merge pull request #777 from pombredanne/patch-1. [Justin Caratzas]
2127
2128  Update version to be a PEP386 strict with a minor qualifier of 0 for now...
2129
2130- Update version to be a PEP386 strict with a minor qualifier of 0 for
2131  now. [pombredanne]
2132
2133  This version becomes a "strict" version under PEP386 and should be recognized by install/packaging tools (such as distribute/distutils/setuptools) as newer than 2.0.0-beta. This will also help making small increments of the version which brings some sanity when using an update from HEAD and ensure that things will upgrade alright.
2134
2135- Update_index: display Unicode model names (closes #767) [Chris Adams]
2136
2137  The model's verbose_name_plural value is included as Unicode but under
2138  Python 2.x the progress message it was included in was a regular
2139  byte-string. Now it's correctly handled as Unicode throughout.
2140
2141- Merge pull request #731 from adityar7/master. [Jannis Leidel]
2142
2143  Setup custom routers before settings up signal processor.
2144
2145- Setup custom routers before settings up signal processor. [Aditya
2146  Rajgarhia]
2147
2148  Fixes https://github.com/toastdriven/django-haystack/issues/727
2149
2150- Port the `from_python` method from pyelasticsearch to the
2151  Elasticsearch backend, similar to `to_python` in
2152  181bbc2c010a135b536e4d1f7a1c5ae4c63e33db. [Jannis Leidel]
2153
2154  Fixes #762. Refs #759.
2155
2156- Merge pull request #761 from stefanw/simple-models-filter. [Justin
2157  Caratzas]
2158
2159  Make models filter work on simple backend
2160
2161- Make model filter for simple backend work. [Stefan Wehrmeyer]
2162
2163  Adds Stefan Wehrmeyer to AUTHORS for patch
2164
2165- Merge pull request #746 from lazerscience/fix-update-index-output.
2166  [Justin Caratzas]
2167
2168  Using force_text for indexing message
2169
2170- Replacing `force_text` with `force_unicode`. #746. [Bernhard Vallant]
2171
2172- Using force_text for indexing message. [Bernhard Vallant]
2173
2174  verbose_name_plural may be a functional proxy object from ugettext_lazy,
2175  it should be forced to be a string!
2176
2177- Support pyelasticsearch 0.4 change (closes #759) [Chris Adams]
2178
2179  pyelasticsearch 0.4 removed the `to_python` method Haystack used.
2180
2181  Thanks to @erikrose for the quick patch
2182
2183- Merge pull request #755 from toastdriven/issue/754-doc-build-warning.
2184  [Chris Adams]
2185
2186- Add preceding dots to hyperlink target; fixes issue 754. [Ben
2187  Spaulding]
2188
2189  This error was introduced in commit faacbcb.
2190
2191- Merge pull request #752 from bigjust/master. [Justin Caratzas]
2192
2193  Fix Simple Score field collision
2194
2195- Simple: Fix bug in score field collision. [bigjust]
2196
2197  Previous commit 0a9c919 broke the simple backend for models that
2198  didn't have an indexed score field.  Added a test to cover regression.
2199
2200- Set zip_safe in setup.py to prevent egg creation. [Jannis Leidel]
2201
2202  This is a work around for a bug in Django that prevents detection of management commands embedded in packages installed as setuptools eggs.
2203
2204- Merge pull request #740 from acdha/simplify-search-view-name-property.
2205  [Chris Adams]
2206
2207  Remove redundant __name__ assignment on SearchView
2208
2209- Remove redundant __name__ assignment on SearchView. [Chris Adams]
2210
2211  __name__ was being explicitly set to a value which was the same as the
2212  default value.
2213
2214  Additionally corrected the obsolete __name__ method declaration in the
2215  documentation which reflected the code prior to SHA:89d8096 in 2010.
2216
2217- Merge pull request #698 from gjb83/master. [Chris Adams]
2218
2219  Fixed deprecation warning for url imports on Django 1.3
2220
2221  Thanks to @gjb83 for the patch.
2222
2223- Removed star imports. [gjb83]
2224
2225- Maintain Django 1.3 compatibility. [gjb83]
2226
2227- Fixed deprecation warning. [gjb83]
2228
2229  django.conf.urls.defaults is now deprecated. Use django.conf.urls instead.
2230
2231- Merge pull request #743 from bigjust/solr-managementcmd-fix. [Justin
2232  Caratzas]
2233
2234  Solr build_solr_schema: fixed a bug in build_solr_schema. Thanks to mjum...
2235
2236- Solr build_solr_schema: fixed a bug in build_solr_schema. Thanks to
2237  mjumbewu for the report! [Justin Caratzas]
2238
2239  If you tried to run build_solr_schema with a backend that supports
2240  schema building, but was not Solr (like Whoosh), then you would get an
2241  invalid schema.  This fix raises the ImproperlyConfigured exception
2242  with a proper message.
2243
2244- Merge pull request #742 from bigjust/simple-backend-score-fix. [Justin
2245  Caratzas]
2246
2247- Simple: removed conflicting score field from raw result objects.
2248  [Justin Caratzas]
2249
2250  This keeps consistency with the Solr backend, which resolves this conflict
2251  in the same manner.
2252
2253- ElasticSearch: fix AltParser test. [Chris Adams]
2254
2255  AltParser queries are still broken but that fucntionality has only been
2256  listed as supported on Solr.
2257
2258- Better Solr AltParser quoting (closes #730) [Chris Adams]
2259
2260  Previously the Solr AltParser implementation embedded the search term as an
2261  attribte inside the {!…} construct, which required it to be doubly escaped.
2262
2263  This change contributed by @ivirabyan moves the value outside the query,
2264  requiring only our normal quoting:
2265
2266      q=(_query_:"{!edismax}Assassin's Creed")
2267
2268  instead of:
2269
2270      q=(_query_:"{!edismax v='Assassin's Creed'}")
2271
2272  Thanks @ivirabyan for the patch!
2273
2274- Solr: use nested query syntax for AltParser queries. [Chris Adams]
2275
2276  The previous implementation would, given a query like this::
2277
2278      sqs.filter(content=AltParser('dismax', 'library', qf="title^2 text" mm=1))
2279
2280  generate a query like this::
2281
2282      {!dismax v=library qf="title^2 text" mm=1}
2283
2284  This works in certain situations but causes Solr to choke while parsing it
2285  when Haystack wraps this term in parentheses::
2286
2287      org.apache.lucene.queryParser.ParseException: Cannot parse '({!dismax mm=1 qf='title^2 text institution^0.8' v=library})':
2288      Encountered " &lt;RANGEEX_GOOP&gt; "qf=\'title^1.25 "" at line 1, column 16.
2289
2290  The solution is to use the nested query syntax described here:
2291
2292      http://searchhub.org/2009/03/31/nested-queries-in-solr/
2293
2294  This will produce a query like this, which works with Solr 3.6.2::
2295
2296      (_query_:"{!edismax mm=1 qf='title^1.5 text institution^0.5' v=library}")
2297
2298  Leaving the actual URL query string looking like this::
2299
2300      q=%28_query_%3A%22%7B%21edismax+mm%3D1+qf%3D%27title%5E1.5+text+institution%5E0.5%27+v%3Dlibrary%7D%22%29
2301
2302  * Tests updated for the new query generation output
2303  * A Solr backend task was added to actually run the dismax queries and verify
2304    that we're not getting Solr 400s errors due to syntax gremlins
2305
2306- Pass active backend to index queryset calls (closes #534) [Chris
2307  Adams]
2308
2309  Now the Index index_queryset() and read_queryset() methods will be called with
2310  the active backend name so they can optionally perform backend-specific
2311  filtering.
2312
2313  This is extremely useful when using something like Solr cores to maintain
2314  language specific backends, allowing an Index to select the appropriate
2315  documents for each language::
2316
2317      def index_queryset(self, using=None):
2318          return Post.objects.filter(language=using)
2319
2320  Changes:
2321      * clear_index, update_index and rebuild_index all default to processing
2322        *every* backend. ``--using`` may now be provided multiple times to select
2323        a subset of the configured backends.
2324      * Added examples to the Multiple Index documentation page
2325
2326- Because Windows. [Daniel Lindsley]
2327
2328- Fixed the docs on debugging to cover v2. Thanks to eltesttox for the
2329  report. [Daniel Lindsley]
2330
2331- That second colon matters. [Daniel Lindsley]
2332
2333- Further docs on autocomplete. [Daniel Lindsley]
2334
2335- Fixed the imports that would stomp on each other. [Daniel Lindsley]
2336
2337  Thanks to codeinthehole, Attorney-Fee & imacleod for pointing this out.
2338
2339- BACKWARD-INCOMPATIBLE: Removed ``RealTimeSearchIndex`` in favor of
2340  ``SignalProcessors``. [Daniel Lindsley]
2341
2342  This only affects people who were using ``RealTimeSearchIndex`` (or a
2343  queuing variant) to perform near real-time updates. Those users should
2344  refer to the Migration documentation.
2345
2346- Updated ignores. [Daniel Lindsley]
2347
2348- Merge pull request #552 from hadesgames/master. [Jannis Leidel]
2349
2350  Fixes process leak when using update_index with workers.
2351
2352- Fixed update_index process leak. [Tache Alexandru]
2353
2354- Merge branch 'master' of github.com:toastdriven/django-haystack.
2355  [Jannis Leidel]
2356
2357- Merge pull request #682 from acdha/682-update_index-tz-support. [Chris
2358  Adams]
2359
2360  update_index should use non-naive datetime when settings.USE_TZ=True
2361
2362- Tests for update_index timezone support. [Chris Adams]
2363
2364  * Confirm that update_index --age uses the Django timezone-aware now
2365    support function
2366  * Skip this test on Django 1.3
2367
2368- Update_index: use tz-aware datetime where applicable. [Chris Adams]
2369
2370  This will allow Django 1.4 users with USE_TZ=True to use update_index with time
2371  windowing as expected - otherwise the timezone offset needs to be manually
2372  included in the value passed to -a
2373
2374- Tests: mark expected failures in Whoosh suite. [Chris Adams]
2375
2376  This avoids making it painful to run the test suite and flags the tests which
2377  need attention
2378
2379- Tests: mark expected failures in ElasticSearch suite. [Chris Adams]
2380
2381  This avoids making it painful to run the test suite and flags the tests which
2382  need attention
2383
2384- Multiple index tests: correct handling of Whoosh teardown. [Chris
2385  Adams]
2386
2387  We can't remove the Whoosh directory per-test - only after every
2388  test has run…
2389
2390- Whoosh tests: use a unique tempdir. [Chris Adams]
2391
2392  This ensures that there's no way for results to persist across runs
2393  and lets the OS clean up the mess if we fail catastrophically
2394
2395  The multiindex and regular whoosh tests will have different prefixes to ease
2396  debugging
2397
2398- Merge pull request #699 from acdha/tox-multiple-django-versions.
2399  [Chris Adams]
2400
2401  Minor tox.ini & test runner tidying
2402
2403- Test runner: set exit codes on failure. [Chris Adams]
2404
2405- Tox: refactor envlist to include Django versions. [Chris Adams]
2406
2407  * Expanded base dependencies
2408  * Set TEST_RUNNER_ARGS=-v0 to reduce console noise
2409  * Add permutations of python 2.5, 2.6, 2.7 and django 1.3 and 1.4
2410
2411- Test runner: add $TEST_RUNNER_ARGS env. variable. [Chris Adams]
2412
2413  This allows you to export TEST_RUNNER_ARGS=-v0 to affect all 9
2414  invocations
2415
2416- Tox: store downloads in tmpdir. [Chris Adams]
2417
2418- Be a bit more careful when resetting connections in the
2419  multiprocessing updater. Fixes #562. [Jannis Leidel]
2420
2421- Fixed distance handling in result parser of the elasticsearch backend.
2422  This is basically the second part of #566. Thanks to Josh Drake for
2423  the initial patch. [Jannis Leidel]
2424
2425- Merge pull request #670 from dhan88/master. [Jannis Leidel]
2426
2427  Elasticsearch backend using incorrect coordinates for geo_bounding_box (within) filter
2428
2429- Elasticsearch geo_bounding_box filter expects top_left (northwest) and
2430  bottom_right (southeast). Haystack's elasticsearch backend is passing
2431  northeast and southwest coordinates instead. [Danny Han]
2432
2433- Merge pull request #666 from caioariede/master. [Jannis Leidel]
2434
2435  Fixes incorrect call to put_mapping on ElasticSearch backend
2436
2437- Fixes incorrect call to put_mapping on elasticsearch backend. [Caio
2438  Ariede]
2439
2440- Added ericholscher to AUTHORS. [Daniel Lindsley]
2441
2442- Add a title for the support matrix so it's linkable. [Eric Holscher]
2443
2444- Tests: command-line help and coverage.py support. [Chris Adams]
2445
2446  This makes run_all_tests.sh a little easier to use and simplifies the process of
2447  running under coverage.py
2448
2449  Closes #683
2450
2451- Tests: basic help and coverage.py support. [Chris Adams]
2452
2453  run_all_tests.sh now supports --help and --with-coverage
2454
2455- Add a CONTRIBUTING.md file for Github. [Chris Adams]
2456
2457  This is a migrated copy of docs/contributing.rst so Github can suggest it when
2458  pull requests are being created
2459
2460- Fix combination logic for complex queries. [Chris Adams]
2461
2462  Previously combining querysets which used a mix of logical AND and OR operations
2463  behaved unexpectedly.
2464
2465  Thanks to @mjl for the patch and tests in SHA: 9192dbd
2466
2467  Closes #613, #617
2468
2469- Added rz to AUTHORS. [Daniel Lindsley]
2470
2471- Fixed string joining bug in the simple backend. [Rodrigo Guzman]
2472
2473- Added failing test case for #438. [Daniel Lindsley]
2474
2475- Fix Solr more-like-this tests (closes #655) [Chris Adams]
2476
2477  * Refactored the MLT tests to be less brittle in checking only
2478    the top 5 results without respect to slight ordering
2479    variations.
2480  * Refactored LiveSolrMoreLikeThisTestCase into multiple tests
2481  * Convert MLT templatetag tests to rely on mocks for stability
2482    and to avoid hard-coding backend assumptions, at the expense
2483    of relying completely on the backend MLT queryset-level tests
2484    to exercise that code.
2485  * Updated MLT code to always assume deferred querysets are
2486    available (introduced in Django 1.1) and removed a hard-coded
2487    internal attr check
2488
2489- All backends: fixed more_like_this & deferreds. [Chris Adams]
2490
2491  Django removed the get_proxied_model helper function in the 1.3 dev
2492  cycle:
2493
2494  https://code.djangoproject.com/ticket/17678
2495
2496  This change adds support for the simple new property access used by 1.3+
2497
2498  BACKWARD INCOMPATIBLE: Django 1.2 is no longer supported
2499
2500- Updated elasticsearch backend to use a newer pyelasticsearch release
2501  that features an improved API , connection pooling and better
2502  exception handling. [Jannis Leidel]
2503
2504- Added Gidsy to list of who uses Haystack. [Jannis Leidel]
2505
2506- Increased the number of terms facets returned by the Elasticsearch
2507  backend to 100 from the default 10 to work around an issue upstream.
2508  [Jannis Leidel]
2509
2510  This is hopefully only temporary until it's fixed in Elasticsearch, see https://github.com/elasticsearch/elasticsearch/issues/1776.
2511
2512- Merge pull request #643 from stephenmcd/master. [Chris Adams]
2513
2514  Fixed logging in simple_backend
2515
2516- Fixed logging in simple_backend. [Stephen McDonald]
2517
2518- Added Pitchup to Who Uses. [Daniel Lindsley]
2519
2520- Merge branch 'unittest2-fix' [Chris Adams]
2521
2522- Better unittest2 detection. [Chris Adams]
2523
2524  This supports Python 2.6 and earlier by shifting the import to look
2525  towards the future name rather than the past
2526
2527- Merge pull request #652 from acdha/solr-content-extraction-test-fix.
2528  [Chris Adams]
2529
2530  Fix the Solr content extraction handler tests
2531
2532- Add a minimal .travis.yml file to suppress build spam. [Chris Adams]
2533
2534  Until the travis-config branch is merged in, this can be spread around to avoid
2535  wasting time running builds before we're ready
2536
2537- Tests: enable Solr content extraction handler. [Chris Adams]
2538
2539  This is needed for the test_content_extraction test to pass
2540
2541- Tests: Solr: fail immediately on config errors. [Chris Adams]
2542
2543- Solr tests: clean unused imports. [Chris Adams]
2544
2545- Suppress console DeprecationWarnings. [Chris Adams]
2546
2547- Merge pull request #651 from acdha/unittest2-fix. [Chris Adams]
2548
2549  Update unittest2 import logic so the tests can actually be run
2550
2551- Update unittest2 import logic. [Chris Adams]
2552
2553  We'll try to get it from Django 1.3+ but Django 1.2 users will need to install
2554  it manually
2555
2556- Merge pull request #650 from bigjust/patch-1. [Chris Adams]
2557
2558  Fix typo in docstring
2559
2560- Fix typo. [Justin Caratzas]
2561
2562- Refactor to use a dummy logger that lets you turn off logging. [Travis
2563  Swicegood]
2564
2565- A bunch of Solr testing cleanup. [Chris Adams]
2566
2567- Skip test is pysolr isn't available. [Travis Swicegood]
2568
2569- Updated Who Uses to correct a backend usage. [Daniel Lindsley]
2570
2571- Updated documentation about using the main pyelasticsearch release.
2572  [Jannis Leidel]
2573
2574- Merge pull request #628 from kjoconnor/patch-1. [Jannis Leidel]
2575
2576  Missing `
2577
2578- Missing ` [Kevin O'Connor]
2579
2580- Fixed a mostly-empty warning in the ``SearchQuerySet`` docs. Thanks to
2581  originell for the report! [Daniel Lindsley]
2582
2583- Fixed the "Who Uses" entry on AstroBin. [Daniel Lindsley]
2584
2585- Use the match_all query to speed up performing filter only queries
2586  dramatically. [Jannis Leidel]
2587
2588- Fixed typo in docs. Closes #612. [Jannis Leidel]
2589
2590- Updated link to celery-haystack repository. [Jannis Leidel]
2591
2592- Fixed the docstring of SearchQuerySet.none. Closes #435. [Jannis
2593  Leidel]
2594
2595- Fixed the way quoting is done in the Whoosh backend when using the
2596  ``__in`` filter. [Jason Kraus]
2597
2598- Added the solrconfig.xml I use for testing. [Daniel Lindsley]
2599
2600- Fixed typo in input types docs. Closes #551. [Jannis Leidel]
2601
2602- Make sure an search engine's backend isn't instantiated on every call
2603  to the backend but only once. Fixes #580. [Jannis Leidel]
2604
2605- Restored sorting to ES backend that was broken in
2606  d1fa95529553ef8d053308159ae4efc455e0183f. [Jannis Leidel]
2607
2608- Prevent spatial filters from stomping on existing filters in
2609  ElasticSearch backend. [Josh Drake]
2610
2611- Merge branch 'mattdeboard-sq-run-refactor' [Jannis Leidel]
2612
2613- Fixed an ES test that seems like a change in behavior in recent ES
2614  versions. [Jannis Leidel]
2615
2616- Merge branch 'sq-run-refactor' of https://github.com/mattdeboard
2617  /django-haystack into mattdeboard-sq-run-refactor. [Jannis Leidel]
2618
2619- Refactor Solr & ES SearchQuery subclasses to use the ``build_params``
2620  from ``BaseSearchQuery`` to build the kwargs to be passed to the
2621  search engine. [Matt DeBoard]
2622
2623  This refactor is made to make extending Haystack simpler. I only ran the Solr tests which invoked a ``run`` call (via ``get_results``), and those passed. I did not run the ElasticSearch tests; however, the ``run`` method for both Lucene-based search engines were identical before, and are identical now. The test I did run -- ``LiveSolrSearchQueryTestCase.test_log_query`` -- passed.
2624
2625- Merge branch 'master' of https://github.com/toastdriven/django-
2626  haystack. [Jannis Leidel]
2627
2628- Merge pull request #568 from duncm/master. [Jannis Leidel]
2629
2630  Fix exception in SearchIndex.get_model()
2631
2632- Fixed ``SearchIndex.get_model()`` to raise exception instead of
2633  returning it. [Duncan Maitland]
2634
2635- Merge branch 'master' of https://github.com/toastdriven/django-
2636  haystack. [Jannis Leidel]
2637
2638- Fixed Django 1.4 compatibility. Thanks to bloodchild for the report!
2639  [Daniel Lindsley]
2640
2641- Refactored ``SearchBackend.search`` so that kwarg-generation
2642  operations are in a discrete method. [Matt DeBoard]
2643
2644  This makes it much simpler to subclass ``SearchBackend`` (& the engine-specific variants) to add support for new parameters.
2645
2646- Added witten to AUTHORS. [Daniel Lindsley]
2647
2648- Fix for #378: Highlighter returns unexpected results if one term is
2649  found within another. [dan]
2650
2651- Removed jezdez's old entry in AUTHORS. [Daniel Lindsley]
2652
2653- Added Jannis to Primary Authors. [Daniel Lindsley]
2654
2655- Merge branch 'master' of github.com:jezdez/django-haystack. [Jannis
2656  Leidel]
2657
2658- Fixed a raise condition when using the simple backend (e.g. in tests)
2659  and changing the DEBUG setting dynamically (e.g. in integration
2660  tests). [Jannis Leidel]
2661
2662- Add missing `ImproperlyConfigured` import from django's exceptions.
2663  [Luis Nell]
2664
2665  l178 failed.
2666
2667- Commercial support is now officially available for Haystack. [Daniel
2668  Lindsley]
2669
2670- Using multiple workers (and resetting the connection) causes things to
2671  break when the app is finished and it moves to the next and does
2672  qs.count() to get a count of the objects in that app to index with
2673  psycopg2 reporting a closed connection. Manually closing the
2674  connection before each iteration if using multiple workers before
2675  building the queryset fixes this issue. [Adam Fast]
2676
2677- Removed code leftover from v1.X. Thanks to kossovics for the report!
2678  [Daniel Lindsley]
2679
2680- Fixed a raise condition when using the simple backend (e.g. in tests)
2681  and changing the DEBUG setting dynamically (e.g. in integration
2682  tests). [Jannis Leidel]
2683
2684- All backends let individual documents fail, rather than failing whole
2685  chunks. Forward port of acdha's work on 1.2.X. [Daniel Lindsley]
2686
2687- Added ikks to AUTHORS. [Daniel Lindsley]
2688
2689- Fixed ``model_choices`` to use ``smart_unicode``. [Igor Támara]
2690
2691- +localwiki.org. [Philip Neustrom]
2692
2693- Added Pix Populi to "Who Uses". [Daniel Lindsley]
2694
2695- Added contribution guidelines. [Daniel Lindsley]
2696
2697- Updated the docs to reflect the supported version of Django. Thanks to
2698  catalanojuan for the original patch! [Daniel Lindsley]
2699
2700- Fix PYTHONPATH Export and add Elasticsearch example. [Craig Nagy]
2701
2702- Updated the Whoosh URL. Thanks to cbess for the original patch!
2703  [Daniel Lindsley]
2704
2705- Reset database connections on each process on update_index when using
2706  --workers. [Diego Búrigo Zacarão]
2707
2708- Moved the ``build_queryset`` method to ``SearchIndex``. [Alex Vidal]
2709
2710  This method is used to build the queryset for indexing operations. It is copied
2711  from the build_queryset function that lived in the update_index management
2712  command.
2713
2714  Making this change allows developers to modify the queryset used for indexing
2715  even when a date filter is necessary. See `tests/core/indexes.py` for tests.
2716
2717- Fixed a bug where ``Indexable`` could be mistakenly recognized as a
2718  discoverable class. Thanks to twoolie for the original patch! [Daniel
2719  Lindsley]
2720
2721- Fixed a bug with query construction. Thanks to dstufft for the report!
2722  [Daniel Lindsley]
2723
2724  This goes back to erroring on the side of too many parens, where there weren't enough before. The engines will no-op them when they're not important.
2725
2726- Fixed a bug where South would cause Haystack to setup too soon. Thanks
2727  to adamfast for the report! [Daniel Lindsley]
2728
2729- Added Crate.io to "Who Uses"! [Daniel Lindsley]
2730
2731- Fixed a small typo in spatial docs. [Frank Wiles]
2732
2733- Logging: avoid forcing string interpolation. [Chris Adams]
2734
2735- Fixed docs on using a template for Solr schema. [Daniel Lindsley]
2736
2737- Add note to 'Installing Search Engines' doc explaining how to override
2738  the template used by 'build_solr_schema' [Matt DeBoard]
2739
2740- Better handling of ``.models``. Thanks to zbyte64 for the report &
2741  HonzaKral for the original patch! [Daniel Lindsley]
2742
2743- Added Honza to AUTHORS. [Daniel Lindsley]
2744
2745- Handle sorting for ElasticSearch better. [Honza Kral]
2746
2747- Update docs/backend_support.rst. [Issac Kelly]
2748
2749- Fixed a bug where it's possible to erroneously try to get spelling
2750  suggestions. Thanks to bigjust for the report! [Daniel Lindsley]
2751
2752- The ``dateutil`` requirement is now optional. Thanks to arthurnn for
2753  the report. [Daniel Lindsley]
2754
2755- Fixed docs on Solr spelling suggestion until the new Suggester support
2756  can be added. Thanks to zw0rk & many others for the report! [Daniel
2757  Lindsley]
2758
2759- Bumped to beta. [Daniel Lindsley]
2760
2761  We're not there yet, but we're getting close.
2762
2763- Added saved-search to subproject docs. [Daniel Lindsley]
2764
2765- Search index discovery no longer swallows errors with reckless
2766  abandon. Thanks to denplis for the report! [Daniel Lindsley]
2767
2768- Elasticsearch backend officially supported. [Daniel Lindsley]
2769
2770  All tests passing.
2771
2772- Back down to 3 on latest pyelasticsearch. [Daniel Lindsley]
2773
2774- And then there were 3 (Elasticsearch test failures). [Daniel Lindsley]
2775
2776- Solr tests now run faster. [Daniel Lindsley]
2777
2778- Improved the tutorial docs. Thanks to denplis for the report! [Daniel
2779  Lindsley]
2780
2781- Down to 9 failures on Elasticsearch. [Daniel Lindsley]
2782
2783- Because the wishlist has changed. [Daniel Lindsley]
2784
2785- A few small fixes. Thanks to robhudson for the report! [Daniel
2786  Lindsley]
2787
2788- Added an experimental Elasticsearch backend. [Daniel Lindsley]
2789
2790  Tests are not yet passing but it works in basic hand-testing. Passing test coverage coming soon.
2791
2792- Fixed a bug related to the use of ``Exact``. [Daniel Lindsley]
2793
2794- Removed accidental indent. [Daniel Lindsley]
2795
2796- Ensure that importing fields without the GeoDjango kit doesn't cause
2797  an error. Thanks to dimamoroz for the report! [Daniel Lindsley]
2798
2799- Added the ability to reload a connection. [Daniel Lindsley]
2800
2801- Fixed ``rebuild_index`` to properly have all options available.
2802  [Daniel Lindsley]
2803
2804- Fixed a bug in pagination. Thanks to sgoll for the report! [Daniel
2805  Lindsley]
2806
2807- Added an example to the docs on what to put in ``INSTALLED_APPS``.
2808  Thanks to Dan Krol for the suggestion. [Daniel Lindsley]
2809
2810- Changed imports so the geospatial modules are only imported as needed.
2811  [Dan Loewenherz]
2812
2813- Better excluded index detection. [Daniel Lindsley]
2814
2815- Fixed a couple of small typos. [Sean Bleier]
2816
2817- Made sure the toolbar templates are included in the source
2818  distribution. [Jannis Leidel]
2819
2820- Fixed a few documentation issues. [Jannis Leidel]
2821
2822- Moved my contribution for the geospatial backend to a attribution of
2823  Gidsy which funded my work. [Jannis Leidel]
2824
2825- Small docs fix. [Daniel Lindsley]
2826
2827- Added input types, which enables advanced querying support. Thanks to
2828  CMGdigital for funding the development! [Daniel Lindsley]
2829
2830- Added geospatial search support! [Daniel Lindsley]
2831
2832  I have anxiously waited to add this feature for almost 3 years now.
2833  Support is finally present in more than one backend & I was
2834  generously given some paid time to work on implementing this.
2835
2836  Thanks go out to:
2837
2838    * CMGdigital, who paid for ~50% of the development of this feature
2839      & were awesomely supportive.
2840    * Jannis Leidel (jezdez), who did the original version of this
2841      patch & was an excellent sounding board.
2842    * Adam Fast, for patiently holding my hand through some of the
2843      geospatial confusions & for helping me verify GeoDjango
2844      functionality.
2845    * Justin Bronn, for the great work he originally did on
2846      GeoDjango, which served as a point of reference/inspiration
2847      on the API.
2848
2849  And thanks to all others who have submitted a variety of
2850  patches/pull requests/interest throughout the years trying to get
2851  this feature in place.
2852
2853- Added .values() / .values_list() methods, for fetching less data.
2854  Thanks to acdha for the original implementation! [Daniel Lindsley]
2855
2856- Reduced the number of queries Haystack has to perform in many cases
2857  (pagination/facet_counts/spelling_suggestions). Thanks to acdha for
2858  the improvements! [Daniel Lindsley]
2859
2860- Spruced up the layout on the new DjDT panel. [Daniel Lindsley]
2861
2862- Fixed compatibility with Django pre-1.4 trunk. * The
2863  MAX_SHOW_ALL_ALLOWED variable is no longer available, and hence causes
2864  an ImportError with Django versions higher 1.3. * The
2865  "list_max_show_all" attribute on the ChangeList object is used
2866  instead. * This patch maintains compatibility with Django 1.3 and
2867  lower by trying to import the MAX_SHOW_ALL_ALLOWED variable first.
2868  [Aram Dulyan]
2869
2870- Updated ``setup.py`` for the new panel bits. [Daniel Lindsley]
2871
2872- Added a basic DjDT panel for Haystack. Thanks to robhudson for
2873  planting the seed that Haystack should bundle this! [Daniel Lindsley]
2874
2875- Added the ability to specify apps or individual models to
2876  ``update_index``. Thanks to CMGdigital for funding this development!
2877  [Daniel Lindsley]
2878
2879- Added ``--start/--end`` flags to ``update_index`` to allow finer-
2880  grained control over date ranges. Thanks to CMGdigital for funding
2881  this development! [Daniel Lindsley]
2882
2883- I hate Python packaging. [Daniel Lindsley]
2884
2885- Made ``SearchIndex`` classes thread-safe. Thanks to craigds for the
2886  report & original patch. [Daniel Lindsley]
2887
2888- Added a couple more uses. [Daniel Lindsley]
2889
2890- Bumped reqs in docs for content extraction bits. [Daniel Lindsley]
2891
2892- Added a long description for PyPI. [Daniel Lindsley]
2893
2894- Solr backend support for rich-content extraction. [Chris Adams]
2895
2896  This allows indexes to use text extracted from binary files as well
2897  as normal database content.
2898
2899- Fixed errant ``self.log``. [Daniel Lindsley]
2900
2901  Thanks to terryh for the report!
2902
2903- Fixed a bug with index inheritance. [Daniel Lindsley]
2904
2905  Fields would seem to not obey the MRO while method did. Thanks to ironfroggy for the report!
2906
2907- Fixed a long-time bug where the Whoosh backend didn't have a ``log``
2908  attribute. [Daniel Lindsley]
2909
2910- Fixed a bug with Whoosh's edge n-gram support to be consistent with
2911  the implementation in the other engines. [Daniel Lindsley]
2912
2913- Added celery-haystack to Other Apps. [Daniel Lindsley]
2914
2915- Changed ``auto_query`` so it can be run on other, non-``content``
2916  fields. [Daniel Lindsley]
2917
2918- Removed extra loops through the field list for a slight performance
2919  gain. [Daniel Lindsley]
2920
2921- Moved ``EXCLUDED_INDEXES`` to a per-backend setting. [Daniel Lindsley]
2922
2923- BACKWARD-INCOMPATIBLE: The default filter is now ``__contains`` (in
2924  place of ``__exact``). [Daniel Lindsley]
2925
2926  If you were relying on this behavior before, simply add ``__exact`` to the fieldname.
2927
2928- BACKWARD-INCOMPATIBLE: All "concrete" ``SearchIndex`` classes must now
2929  mixin ``indexes.Indexable`` as well in order to be included in the
2930  index. [Daniel Lindsley]
2931
2932- Added tox to the mix. [Daniel Lindsley]
2933
2934- Allow for less configuration. Thanks to jeromer & cyberdelia for the
2935  reports! [Daniel Lindsley]
2936
2937- Fixed up the management commands to show the right alias & use the
2938  default better. Thanks to jeromer for the report! [Daniel Lindsley]
2939
2940- Fixed a bug where signals wouldn't get setup properly, especially on
2941  ``RealTimeSearchIndex``. Thanks to byoungb for the report! [Daniel
2942  Lindsley]
2943
2944- Fixed formatting in the tutorial. [Daniel Lindsley]
2945
2946- Removed outdated warning about padding numeric fields. Thanks to
2947  mchaput for pointing this out! [Daniel Lindsley]
2948
2949- Added a silent failure option to prevent Haystack from suppressing
2950  some failures. [Daniel Lindsley]
2951
2952  This option defaults to ``True`` for compatibility & to prevent cases where lost connections can break reindexes/searches.
2953
2954- Fixed the simple backend to not throw an exception when handed an
2955  ``SQ``. Thanks to diegobz for the report! [Daniel Lindsley]
2956
2957- Whoosh now supports More Like This! Requires Whoosh 1.8.4. [Daniel
2958  Lindsley]
2959
2960- Deprecated ``get_queryset`` & fixed how indexing happens. Thanks to
2961  Craig de Stigter & others for the report! [Daniel Lindsley]
2962
2963- Fixed a bug where ``RealTimeSearchIndex`` was erroneously included in
2964  index discovery. Thanks to dedsm for the report & original patch!
2965  [Daniel Lindsley]
2966
2967- Added Vickery to "Who Uses". [Daniel Lindsley]
2968
2969- Require Whoosh 1.8.3+. It's for your own good. [Daniel Lindsley]
2970
2971- Added multiprocessing support to ``update_index``! Thanks to
2972  CMGdigital for funding development of this feature. [Daniel Lindsley]
2973
2974- Fixed a bug where ``set`` couldn't be used with ``__in``. Thanks to
2975  Kronuz for the report! [Daniel Lindsley]
2976
2977- Added a ``DecimalField``. [Daniel Lindsley]
2978
2979- Fixed a bug where a different style of import could confuse the
2980  collection of indexes. Thanks to groovecoder for the report. [Daniel
2981  Lindsley]
2982
2983- Fixed a typo in the autocomplete docs. Thanks to anderso for the
2984  catch! [Daniel Lindsley]
2985
2986- Fixed a backward-incompatible query syntax change Whoosh introduced
2987  between 1.6.1 & 1.6.2 that causes only one model to appear as though
2988  it is indexed. [Daniel Lindsley]
2989
2990- Updated AUTHORS to reflect the Kent's involvement in multiple index
2991  support. [Daniel Lindsley]
2992
2993- BACKWARD-INCOMPATIBLE: Added multiple index support to Haystack, which
2994  enables you to talk to more than one search engine in the same
2995  codebase. Thanks to: [Daniel Lindsley]
2996
2997  * Kent Gormat for funding the development of this feature.
2998  * alex, freakboy3742 & all the others who contributed to Django's multidb feature, on which much of this was based.
2999  * acdha for inspiration & feedback.
3000  * dcramer for inspiration & feedback.
3001  * mcroydon for patch review & docs feedback.
3002
3003  This commit starts the development efforts for Haystack v2.
3004
3005v1.2.7 (2012-04-06)
3006-------------------
3007
3008- Bumped to v1.2.7! [Daniel Lindsley]
3009
3010- Solr: more informative logging when full_prepare fails during update.
3011  [Chris Adams]
3012
3013  * Change the exception handler to record per-object failures
3014  * Log the precise object which failed in a manner which tools like Sentry can examine
3015
3016- Added ikks to AUTHORS. [Daniel Lindsley]
3017
3018- Fixed ``model_choices`` to use ``smart_unicode``. Thanks to ikks for
3019  the patch! [Daniel Lindsley]
3020
3021- Fixed compatibility with Django pre-1.4 trunk. * The
3022  MAX_SHOW_ALL_ALLOWED variable is no longer available, and hence causes
3023  an ImportError with Django versions higher 1.3. * The
3024  "list_max_show_all" attribute on the ChangeList object is used
3025  instead. * This patch maintains compatibility with Django 1.3 and
3026  lower by trying to import the MAX_SHOW_ALL_ALLOWED variable first.
3027  [Aram Dulyan]
3028
3029- Fixed a bug in pagination. Thanks to sgoll for the report! [Daniel
3030  Lindsley]
3031
3032- Added an example to the docs on what to put in ``INSTALLED_APPS``.
3033  Thanks to Dan Krol for the suggestion. [Daniel Lindsley]
3034
3035- Added .values() / .values_list() methods, for fetching less data.
3036  [Chris Adams]
3037
3038- Reduced the number of queries Haystack has to perform in many cases
3039  (pagination/facet_counts/spelling_suggestions). [Chris Adams]
3040
3041- Fixed compatibility with Django pre-1.4 trunk. * The
3042  MAX_SHOW_ALL_ALLOWED variable is no longer available, and hence causes
3043  an ImportError with Django versions higher 1.3. * The
3044  "list_max_show_all" attribute on the ChangeList object is used
3045  instead. * This patch maintains compatibility with Django 1.3 and
3046  lower by trying to import the MAX_SHOW_ALL_ALLOWED variable first.
3047  [Aram Dulyan]
3048
3049v1.2.6 (2011-12-09)
3050-------------------
3051
3052- I hate Python packaging. [Daniel Lindsley]
3053
3054- Bumped to v1.2.6! [Daniel Lindsley]
3055
3056- Made ``SearchIndex`` classes thread-safe. Thanks to craigds for the
3057  report & original patch. [Daniel Lindsley]
3058
3059- Added a long description for PyPI. [Daniel Lindsley]
3060
3061- Fixed errant ``self.log``. [Daniel Lindsley]
3062
3063  Thanks to terryh for the report!
3064
3065- Started 1.2.6. [Daniel Lindsley]
3066
3067v1.2.5 (2011-09-14)
3068-------------------
3069
3070- Bumped to v1.2.5! [Daniel Lindsley]
3071
3072- Fixed a bug with index inheritance. [Daniel Lindsley]
3073
3074  Fields would seem to not obey the MRO while method did. Thanks to ironfroggy for the report!
3075
3076- Fixed a long-time bug where the Whoosh backend didn't have a ``log``
3077  attribute. [Daniel Lindsley]
3078
3079- Fixed a bug with Whoosh's edge n-gram support to be consistent with
3080  the implementation in the other engines. [Daniel Lindsley]
3081
3082- Added tswicegood to AUTHORS. [Daniel Lindsley]
3083
3084- Fixed the ``clear_index`` management command to respect the ``--site``
3085  option. [Travis Swicegood]
3086
3087- Removed outdated warning about padding numeric fields. Thanks to
3088  mchaput for pointing this out! [Daniel Lindsley]
3089
3090- Added a silent failure option to prevent Haystack from suppressing
3091  some failures. [Daniel Lindsley]
3092
3093  This option defaults to ``True`` for compatibility & to prevent cases where lost connections can break reindexes/searches.
3094
3095- Fixed the simple backend to not throw an exception when handed an
3096  ``SQ``. Thanks to diegobz for the report! [Daniel Lindsley]
3097
3098- Bumped version post-release. [Daniel Lindsley]
3099
3100- Whoosh now supports More Like This! Requires Whoosh 1.8.4. [Daniel
3101  Lindsley]
3102
3103v1.2.4 (2011-05-28)
3104-------------------
3105
3106- Bumped to v1.2.4! [Daniel Lindsley]
3107
3108- Fixed a bug where the old ``get_queryset`` wouldn't be used during
3109  ``update_index``. Thanks to Craig de Stigter & others for the report.
3110  [Daniel Lindsley]
3111
3112- Bumped to v1.2.3! [Daniel Lindsley]
3113
3114- Require Whoosh 1.8.3+. It's for your own good. [Daniel Lindsley]
3115
3116v1.2.2 (2011-05-19)
3117-------------------
3118
3119- Bumped to v1.2.2! [Daniel Lindsley]
3120
3121- Added multiprocessing support to ``update_index``! Thanks to
3122  CMGdigital for funding development of this feature. [Daniel Lindsley]
3123
3124- Fixed a bug where ``set`` couldn't be used with ``__in``. Thanks to
3125  Kronuz for the report! [Daniel Lindsley]
3126
3127- Added a ``DecimalField``. [Daniel Lindsley]
3128
3129v1.2.1 (2011-05-14)
3130-------------------
3131
3132- Bumped to v1.2.1. [Daniel Lindsley]
3133
3134- Fixed a typo in the autocomplete docs. Thanks to anderso for the
3135  catch! [Daniel Lindsley]
3136
3137- Fixed a backward-incompatible query syntax change Whoosh introduced
3138  between 1.6.1 & 1.6.2 that causes only one model to appear as though
3139  it is indexed. [Daniel Lindsley]
3140
3141v1.2.0 (2011-05-03)
3142-------------------
3143
3144- V1.2.0! [Daniel Lindsley]
3145
3146- Added ``request`` to the ``FacetedSearchView`` context. Thanks to
3147  dannercustommade for the report! [Daniel Lindsley]
3148
3149- Fixed the docs on enabling spelling suggestion support in Solr.
3150  [Daniel Lindsley]
3151
3152- Fixed a bug so that ``ValuesListQuerySet`` now works with the ``__in``
3153  filter. Thanks to jcdyer for the report! [Daniel Lindsley]
3154
3155- Added the new ``SearchIndex.read_queryset`` bits. [Sam Cooke]
3156
3157- Changed ``update_index`` so that it warns you if your
3158  ``SearchIndex.get_queryset`` returns an unusable object. [Daniel
3159  Lindsley]
3160
3161- Removed Python 2.3 compat code & bumped requirements for the impending
3162  release. [Daniel Lindsley]
3163
3164- Added treyhunner to AUTHORS. [Daniel Lindsley]
3165
3166- Improved the way selected_facets are handled. [Chris Adams]
3167
3168  * ``selected_facets`` may be provided multiple times.
3169  * Facet values are quoted to avoid backend confusion (i.e. `author:Joe Blow` is seen by Solr as `author:Joe AND Blow` rather than the expected `author:"Joe Blow"`)
3170
3171- Add test for Whoosh field boost. [Trey Hunner]
3172
3173- Enable field boosting with Whoosh backend. [Trey Hunner]
3174
3175- Fixed the Solr & Whoosh backends to use the correct ``site`` when
3176  processing results. Thanks to Madan Thangavelu for the original patch!
3177  [Daniel Lindsley]
3178
3179- Added lukeman to AUTHORS. [Daniel Lindsley]
3180
3181- Updating Solr download and installation instructions to reference
3182  version 1.4.1 as 1.3.x is no longer available. Fixes #341. [lukeman]
3183
3184- Revert "Shifted ``handle_registrations`` into ``models.py``." [Daniel
3185  Lindsley]
3186
3187  This seems to be breaking for people, despite working here & passing tests. Back to the drawing board...
3188
3189  This reverts commit 106758f88a9bc5ab7e505be62d385d876fbc52fe.
3190
3191- Shifted ``handle_registrations`` into ``models.py``. [Daniel Lindsley]
3192
3193  For historical reasons, it was (wrongly) kept & run in ``__init__.py``. This should help fix many people's issues with it running too soon.
3194
3195- Pulled out ``EmptyResults`` for testing elsewhere. [Daniel Lindsley]
3196
3197- Fixed a bug where boolean filtering wouldn't work properly on Whoosh.
3198  Thanks to alexrobbins for pointing it out! [Daniel Lindsley]
3199
3200- Added link to 1.1 version of the docs. [Daniel Lindsley]
3201
3202- Whoosh 1.8.1 compatibility. [Daniel Lindsley]
3203
3204- Added TodasLasRecetas to "Who Uses". Thanks Javier! [Daniel Lindsley]
3205
3206- Added a new method to ``SearchQuerySet`` to allow you to specify a
3207  custom ``result_class`` to use in place of ``SearchResult``. Thanks to
3208  aaronvanderlip for getting me thinking about this! [Daniel Lindsley]
3209
3210- Added better autocomplete support to Haystack. [Daniel Lindsley]
3211
3212- Changed ``SearchForm`` to be more permissive of missing form data,
3213  especially when the form is unbound. Thanks to cleifer for pointing
3214  this out! [Daniel Lindsley]
3215
3216- Ensured that the primary key of the result is a string. Thanks to
3217  gremmie for pointing this out! [Daniel Lindsley]
3218
3219- Fixed a typo in the tutorial. Thanks to JavierLopezMunoz for pointing
3220  this out! [Daniel Lindsley]
3221
3222- Added appropriate warnings about ``HAYSTACK_<ENGINE>_PATH`` settings
3223  in the docs. [Daniel Lindsley]
3224
3225- Added some checks for badly-behaved backends. [Daniel Lindsley]
3226
3227- Ensure ``use_template`` can't be used with ``MultiValueField``.
3228  [Daniel Lindsley]
3229
3230- Added n-gram fields for auto-complete style searching. [Daniel
3231  Lindsley]
3232
3233- Added ``django-celery-haystack`` to the subapp docs. [Daniel Lindsley]
3234
3235- Fixed the the faceting docs to correctly link to narrowed facets.
3236  Thanks to daveumr for pointing that out! [Daniel Lindsley]
3237
3238- Updated docs to reflect the ``form_kwargs`` that can be used for
3239  customization. [Daniel Lindsley]
3240
3241- Whoosh backend now explicitly closes searchers in an attempt to use
3242  fewer file handles. [Daniel Lindsley]
3243
3244- Changed fields so that ``boost`` is now the parameter of choice over
3245  ``weight`` (though ``weight`` has been retained for backward
3246  compatibility). Thanks to many people for the report! [Daniel
3247  Lindsley]
3248
3249- Bumped revision. [Daniel Lindsley]
3250
3251v1.1 (2010-11-23)
3252-----------------
3253
3254- Bumped version to v1.1! [Daniel Lindsley]
3255
3256- The ``build_solr_schema`` command can now write directly to a file.
3257  Also includes tests for the new overrides. [Daniel Lindsley]
3258
3259- Haystack's reserved field names are now configurable. [Daniel
3260  Lindsley]
3261
3262- BACKWARD-INCOMPATIBLE: ``auto_query`` has changed so that only double
3263  quotes cause exact match searches. Thanks to craigds for the report!
3264  [Daniel Lindsley]
3265
3266- Added docs on handling content-type specific output in results.
3267  [Daniel Lindsley]
3268
3269- Added tests for ``content_type``. [Daniel Lindsley]
3270
3271- Added docs on boosting. [Daniel Lindsley]
3272
3273- Updated the ``searchfield_api`` docs. [Daniel Lindsley]
3274
3275- ``template_name`` can be a list of templates passed to
3276  ``loader.select_template``. Thanks to zifot for the suggestion.
3277  [Daniel Lindsley]
3278
3279- Moved handle_facet_parameters call into FacetField's __init__. [Travis
3280  Cline]
3281
3282- Updated the pysolr dependency docs & added a debugging note about
3283  boost support. [Daniel Lindsley]
3284
3285- Starting the beta. [Daniel Lindsley]
3286
3287- Fixed a bug with ``FacetedSearchForm`` where ``cleaned_data`` may not
3288  exist. Thanks to imageinary for the report! [Daniel Lindsley]
3289
3290- Added the ability to build epub versions of the docs. [Alfredo]
3291
3292- Clarified that the current supported version of Whoosh is the 1.1.1+
3293  series. Thanks to glesica for the report & original patch! [Daniel
3294  Lindsley]
3295
3296- The SearchAdmin now correctly uses SEARCH_VAR instead of assuming
3297  things. [Rob Hudson]
3298
3299- Added the ability to "weight" individual fields to adjust their
3300  relevance. [David Sauve]
3301
3302- Fixed facet fieldname lookups to use the proper fieldname. [Daniel
3303  Lindsley]
3304
3305- Removed unneeded imports from the Solr backend. [Daniel Lindsley]
3306
3307- Further revamping of faceting. Each field type now has a faceted
3308  variant that's created either with ``faceted=True`` or manual
3309  initialization. [Daniel Lindsley]
3310
3311  This should also make user-created field types possible, as many of the gross ``isinstance`` checks were removed.
3312
3313- Fixes SearchQuerySet not pickleable. Patch by oyiptong, tests by
3314  toastdriven. [oyiptong]
3315
3316- Added the ability to remove objects from the index that are no longer
3317  in the database to the ``update_index`` management command. [Daniel
3318  Lindsley]
3319
3320- Added a ``range`` filter type. Thanks to davisp & lukesneeringer for
3321  the suggestion! [Daniel Lindsley]
3322
3323  Note that integer ranges are broken on the current Whoosh (1.1.1). However, date & character ranges seem to work fine.
3324
3325- Consistency. [Daniel Lindsley]
3326
3327- Ensured that multiple calls to ``count`` don't result in multiple
3328  queries. Thanks to Nagyman and others for the report! [Daniel
3329  Lindsley]
3330
3331- Ensure that when fetching the length of a result set that the whole
3332  index isn't consumed (especially on Whoosh & Xapian). [Daniel
3333  Lindsley]
3334
3335- Really fixed dict ordering bugs in SearchSite. [Travis Cline]
3336
3337- Changed how you query for facets and how how they are presented in the
3338  facet counts.  Allows customization of facet field names in indexes.
3339  [Travis Cline]
3340
3341  Lightly backward-incompatible (git only).
3342
3343- Made it easier to override ``SearchView/SearchForm`` behavior when no
3344  query is present. [Daniel Lindsley]
3345
3346  No longer do you need to override both ``SearchForm`` & ``SearchView`` if you want to return all results. Use the built-in ``SearchView``, provide your own custom ``SearchForm`` subclass & override the ``no_query_found`` method per the docstring.
3347
3348- Don't assume that any pk castable to an integer should be an integer.
3349  [Carl Meyer]
3350
3351- Fetching a list of all fields now produces correct results regardless
3352  of dict-ordering. Thanks to carljm & veselosky for the report! [Daniel
3353  Lindsley]
3354
3355- Added notes about what is needed to make schema-building independent
3356  of dict-ordering. [Daniel Lindsley]
3357
3358- Sorted model order matters. [Daniel Lindsley]
3359
3360- Prevent Whoosh from erroring if the ``end_offset`` is less than or
3361  equal to 0. Thanks to zifot for the report! [Daniel Lindsley]
3362
3363- Removed insecure use of ``eval`` from the Whoosh backend. Thanks to
3364  SmileyChris for pointing this out. [Daniel Lindsley]
3365
3366- Disallow ``indexed=False`` on ``FacetFields``. Thanks to jefftriplett
3367  for the report! [Daniel Lindsley]
3368
3369- Added ``FacetField`` & changed the way facets are processed. [Daniel
3370  Lindsley]
3371
3372  Facet data is no longer quietly duplicated just before it goes into the index. Instead, full fields are created (with all the standard data & methods) to contain the faceted information.
3373
3374  This change is backward-compatible, but allows for better extension, not requiring data duplication into an unfaceted field and a little less magic.
3375
3376- EmptyQuerySet.facet_counts() won't hit the backend. [Chris Adams]
3377
3378  This avoids an unnecessary extra backend query displaying the default
3379  faceted search form.
3380
3381- TextMate fail. [Daniel Lindsley]
3382
3383- Changed ``__name__`` to an attribute on ``SearchView`` to work with
3384  decorators. Thanks to trybik for the report! [Daniel Lindsley]
3385
3386- Changed some wording on the tutorial to indicate where the data
3387  template should go. Thanks for the suggestion Davepar! [Daniel
3388  Lindsley]
3389
3390- Merge branch 'whoosh-1.1' [Daniel Lindsley]
3391
3392- Final cleanup before merging Whoosh 1.1 branch! [Daniel Lindsley]
3393
3394- Final Whoosh 1.1.1 fixes. Waiting for an official release of Whoosh &
3395  hand testing, then this ought to be merge-able. [Daniel Lindsley]
3396
3397- Upgraded the Whoosh backend to 1.1. Still one remaining test failure
3398  and two errors. Waiting on mchaput's thoughts/patches. [Daniel
3399  Lindsley]
3400
3401- Mistakenly committed this change. This bug is not fixed. [Daniel
3402  Lindsley]
3403
3404- Better handling of attempts at loading backends when the various
3405  supporting libraries aren't installed. Thanks to traviscline for the
3406  report. [Daniel Lindsley]
3407
3408- Fixed random test failures from not running the Solr tests in awhile.
3409  [Daniel Lindsley]
3410
3411- Changed mlt test to use a set comparison to eliminate failures due to
3412  ordering differences. [Travis Cline]
3413
3414- Sped up Solr backend tests by moving away from RealTimeSearchIndex
3415  since it was adding objects to Solr when loading fixtures. [Travis
3416  Cline]
3417
3418- Automatically add ``suggestion`` to the context if
3419  ``HAYSTACK_INCLUDE_SPELLING`` is set. Thanks to notanumber for the
3420  suggestion! [Daniel Lindsley]
3421
3422- Added apollo13 to AUTHORS for the ``SearchForm.__init__`` cleanup.
3423  [Daniel Lindsley]
3424
3425- Use kwargs.pop instead of try/except. [Florian Apolloner]
3426
3427- Added Rob to AUTHORS for the admin cleanup. [Daniel Lindsley]
3428
3429- Fixed selection_note text by adding missing zero. [Rob Hudson]
3430
3431- Fixed full_result_count in admin search results. [Rob Hudson]
3432
3433- Fixed admin actions in admin search results. [Rob Hudson]
3434
3435- Added DevCheatSheet to "Who Uses". [Daniel Lindsley]
3436
3437- Added Christchurch Art Gallery to "Who Uses". [Daniel Lindsley]
3438
3439- Forgot to include ghostrocket as submitting a patch on the previous
3440  commit. [Daniel Lindsley]
3441
3442- Fixed a serious bug in the ``simple`` backend that would flip the
3443  object instance and class. [Daniel Lindsley]
3444
3445- Updated Whoosh to 0.3.18. [Daniel Lindsley]
3446
3447- Updated NASA's use of Haystack in "Who Uses". [Daniel Lindsley]
3448
3449- Changed how ``ModelSearchIndex`` introspects to accurately use
3450  ``IntegerField`` instead of ``FloatField`` as it was using. [Daniel
3451  Lindsley]
3452
3453- Added CongresoVisible to Who Uses. [Daniel Lindsley]
3454
3455- Added a test to verify a previous change to the ``simple`` backend.
3456  [Daniel Lindsley]
3457
3458- Fixed the new admin bits to not explode on Django 1.1. [Daniel
3459  Lindsley]
3460
3461- Added ``SearchModelAdmin``, which enables Haystack-based search within
3462  the admin. [Daniel Lindsley]
3463
3464- Fixed a bug when not specifying a ``limit`` when using the
3465  ``more_like_this`` template tag. Thanks to symroe for the original
3466  patch. [Daniel Lindsley]
3467
3468- Fixed the error messages that occur when looking up attributes on a
3469  model. Thanks to acdha for the patch. [Daniel Lindsley]
3470
3471- Added pagination to the example search template in the docs so it's
3472  clear that it is supported. [Daniel Lindsley]
3473
3474- Fixed copy-paste foul in ``Installing Search Engines`` docs. [Daniel
3475  Lindsley]
3476
3477- Fixed the ``simple`` backend to return ``SearchResult`` instances, not
3478  just bare model instances. Thanks to Agos for the report. [Daniel
3479  Lindsley]
3480
3481- Fixed the ``clear_index`` management command to respect
3482  ``--verbosity``. Thanks to kylemacfarlane for the report. [Daniel
3483  Lindsley]
3484
3485- Altered the ``simple`` backend to only search textual fields. This
3486  makes the backend work consistently across all databases and is likely
3487  the desired behavior anyhow. Thanks to kylemacfarlane for the report.
3488  [Daniel Lindsley]
3489
3490- Fixed a bug in the ``Highlighter`` which would double-highlight HTML
3491  tags. Thanks to EmilStenstrom for the original patch. [Daniel
3492  Lindsley]
3493
3494- Updated management command docs to mention all options that are
3495  accepted. [Daniel Lindsley]
3496
3497- Altered the Whoosh backend to correctly clear the index when using the
3498  ``RAMStorage`` backend. Thanks to kylemacfarlane for the initial
3499  patch. [Daniel Lindsley]
3500
3501- Changed ``SearchView`` to allow more control over how many results are
3502  shown per page. Thanks to simonw for the suggestion. [Daniel Lindsley]
3503
3504- Ignore ``.pyo`` files when listing out the backend options. Thanks to
3505  kylemacfarlane for the report. [Daniel Lindsley]
3506
3507- Added CustomMade to Who Uses. [Daniel Lindsley]
3508
3509- Moved a backend import to allow changing the backend Haystack uses on
3510  the fly. [Daniel Lindsley]
3511
3512  Useful for testing.
3513
3514- Added more debugging information to the docs. [Daniel Lindsley]
3515
3516- Added DeliverGood.org to the "Who Uses" docs. [Daniel Lindsley]
3517
3518- Added an settings override on ``HAYSTACK_LIMIT_TO_REGISTERED_MODELS``
3519  as a possible performance optimization. [Daniel Lindsley]
3520
3521- Added the ability to pickle ``SearchResult`` objects. Thanks to dedsm
3522  for the original patch. [Daniel Lindsley]
3523
3524- Added docs and fixed tests on the backend loading portions. Thanks to
3525  kylemacfarlane for the report. [Daniel Lindsley]
3526
3527- Fixed bug with ``build_solr_schema`` where ``stored=False`` would be
3528  ignored. Thanks to johnthedebs for the report. [Daniel Lindsley]
3529
3530- Added debugging notes for Solr. Thanks to smccully for reporting this.
3531  [Daniel Lindsley]
3532
3533- Fixed several errors in the ``simple`` backend. Thanks to notanumber
3534  for the original patch. [Daniel Lindsley]
3535
3536- Documentation fixes for Xapian. Thanks to notanumber for the edits!
3537  [Daniel Lindsley]
3538
3539- Fixed a typo in the tutorial. Thanks to cmbeelby for pointing this
3540  out. [Daniel Lindsley]
3541
3542- Fixed an error in the tutorial. Thanks to bencc for pointing this out.
3543  [Daniel Lindsley]
3544
3545- Added a warning to the docs that ``SearchQuerySet.raw_search`` does
3546  not chain. Thanks to jacobstr for the report. [Daniel Lindsley]
3547
3548- Fixed an error in the documentation on providing fields for faceting.
3549  Thanks to ghostmob for the report. [Daniel Lindsley]
3550
3551- Fixed a bug where a field that's both nullable & faceted would error
3552  if no data was provided. Thanks to LarryEitel for the report. [Daniel
3553  Lindsley]
3554
3555- Fixed a regression where the built-in Haystack fields would no longer
3556  facet correctly. Thanks to traviscline for the report. [Daniel
3557  Lindsley]
3558
3559- Fixed last code snippet on the ``SearchIndex.prepare_FOO`` docs.
3560  Thanks to sk1p for pointing that out. [Daniel Lindsley]
3561
3562- Fixed a bug where the schema could be built improperly if similar
3563  fieldnames had different options. [Daniel Lindsley]
3564
3565- Added to existing tests to ensure that multiple faceted fields are
3566  included in the index. [Daniel Lindsley]
3567
3568- Finally added a README. [Daniel Lindsley]
3569
3570- Added a note about versions of the docs. [Daniel Lindsley]
3571
3572- Go back to the default Sphinx theme. The custom Haystack theme is too
3573  much work and too little benefit. [Daniel Lindsley]
3574
3575- Added a note in the tutorial about building the schema when using
3576  Solr. Thanks to trey0 for the report! [Daniel Lindsley]
3577
3578- Fixed a bug where using ``SearchQuerySet.models()`` on an unregistered
3579  model would be silently ignored. [Daniel Lindsley]
3580
3581  It is still silently ignored, but now emits a warning informing the user of why they may receive more results back than they expect.
3582
3583- Added notes about the ``simple`` backend in the docs. Thanks to
3584  notanumber for catching the omission. [Daniel Lindsley]
3585
3586- Removed erroneous old docs about Lucene support, which never landed.
3587  [Daniel Lindsley]
3588
3589- Merge branch 'master' of github.com:toastdriven/django-haystack.
3590  [Daniel Lindsley]
3591
3592- Fixed typo in the tutorial. Thanks fxdgear for pointing that out!
3593  [Daniel Lindsley]
3594
3595- Fixed a bug related to Unicode data in conjunction with the ``dummy``
3596  backend. Thanks to kylemacfarlane for the report! [Daniel Lindsley]
3597
3598- Added Forkinit to Who Uses. [Daniel Lindsley]
3599
3600- Added Rampframe to Who Uses. [Daniel Lindsley]
3601
3602- Added other apps documentation for Haystack-related apps. [Daniel
3603  Lindsley]
3604
3605- Unified the way ``DEFAULT_OPERATOR`` is setup. [Daniel Lindsley]
3606
3607- You can now override ``ITERATOR_LOAD_PER_QUERY`` with a setting if
3608  you're consuming big chunks of a ``SearchQuerySet``. Thanks to
3609  kylemacfarlane for the report. [Daniel Lindsley]
3610
3611- Moved the preparation of faceting data to a
3612  ``SearchIndex.full_prepare()`` method for easier overriding. Thanks to
3613  xav for the suggestion! [Daniel Lindsley]
3614
3615- The ``more_like_this`` tag now silently fails if things go south.
3616  Thanks to piquadrat for the patch! [Daniel Lindsley]
3617
3618- Added a fleshed out ``simple_backend`` for basic usage + testing.
3619  [David Sauve]
3620
3621- ``SearchView.build_form()`` now accepts a dict to pass along to the
3622  form. Thanks to traviscline for the patch! [Daniel Lindsley]
3623
3624- Fixed the ``setup.py`` to include ``haystack.utils`` and added to the
3625  ``MANIFEST.in``. Thanks to jezdez for the patch! [Daniel Lindsley]
3626
3627- Fixed date faceting in Solr. [Daniel Lindsley]
3628
3629  No more OOMs and very fast over large data sets.
3630
3631- Added the ``search_view_factory`` function for thread-safe use of
3632  ``SearchView``. [Daniel Lindsley]
3633
3634- Added more to the docs about the ``SearchQuerySet.narrow()`` method to
3635  describe when/why to use it. [Daniel Lindsley]
3636
3637- Fixed Whoosh tests. [Daniel Lindsley]
3638
3639  Somewhere, a reference to the old index was hanging around causing incorrect failures.
3640
3641- The Whoosh backed now uses the ``AsyncWriter``, which ought to provide
3642  better performance. Requires Whoosh 0.3.15 or greater. [Daniel
3643  Lindsley]
3644
3645- Added a way to pull the correct fieldname, regardless if it's been
3646  overridden or not. [Daniel Lindsley]
3647
3648- Added docs about adding new fields. [Daniel Lindsley]
3649
3650- Removed a painful ``isinstance`` check which should make non-standard
3651  usages easier. [Daniel Lindsley]
3652
3653- Updated docs regarding reserved field names in Haystack. [Daniel
3654  Lindsley]
3655
3656- Pushed some of the new faceting bits down in the implementation.
3657  [Daniel Lindsley]
3658
3659- Removed unnecessary fields from the Solr schema template. [Daniel
3660  Lindsley]
3661
3662- Revamped how faceting is done within Haystack to make it easier to
3663  work with. [Daniel Lindsley]
3664
3665- Add more sites to Who Uses. [Daniel Lindsley]
3666
3667- Fixed a bug in ``ModelSearchIndex`` where the ``index_fieldname``
3668  would not get set. Also added a way to override it in a general
3669  fashion. Thanks to traviscline for the patch! [Daniel Lindsley]
3670
3671- Backend API standardization. Thanks to batiste for the report! [Daniel
3672  Lindsley]
3673
3674- Removed a method that was supposed to have been removed before 1.0.
3675  Oops. [Daniel Lindsley]
3676
3677- Added the ability to override field names within the index. Thanks to
3678  traviscline for the suggestion and original patch! [Daniel Lindsley]
3679
3680- Corrected the AUTHORS because slai actually provided the patch. Sorry
3681  about that. [Daniel Lindsley]
3682
3683- Refined the internals of ``ModelSearchIndex`` to be a little more
3684  flexible. Thanks to traviscline for the patch! [Daniel Lindsley]
3685
3686- The Whoosh backend now supports ``RamStorage`` for use with testing or
3687  other non-permanent indexes. [Daniel Lindsley]
3688
3689- Fixed a bug in the ``Highlighter`` involving repetition and regular
3690  expressions. Thanks to alanzoppa for the original patch! [Daniel
3691  Lindsley]
3692
3693- Fixed a bug in the Whoosh backend when a ``MultiValueField`` is empty.
3694  Thanks to alanwj for the original patch! [Daniel Lindsley]
3695
3696- All dynamic imports now use ``importlib``. Thanks to bfirsh for the
3697  original patch mentioning this. [Daniel Lindsley]
3698
3699  A backported version of ``importlib`` is included for compatibility with Django 1.0.
3700
3701- Altered ``EmptySearchQuerySet`` so it's usable from templates. Thanks
3702  to bfirsh for the patch! [Daniel Lindsley]
3703
3704- Added tests to ensure a Whoosh regression is no longer present.
3705  [Daniel Lindsley]
3706
3707- Fixed a bug in Whoosh where using just ``.models()`` would create an
3708  invalid query. Thanks to ricobl for the original patch. [Daniel
3709  Lindsley]
3710
3711- Forms with initial data now display it when used with SearchView.
3712  Thanks to osirius for the original patch. [Daniel Lindsley]
3713
3714- App order is now consistent with INSTALLED_APPS when running
3715  ``update_index``. [Daniel Lindsley]
3716
3717- Updated docs to reflect the recommended way to do imports in when
3718  defining ``SearchIndex`` classes. [Daniel Lindsley]
3719
3720  This is not my preferred style but reduces the import errors some people experience.
3721
3722- Fixed omission of Xapian in the settings docs. Thanks to flebel for
3723  pointing this out. [Daniel Lindsley]
3724
3725- Little bits of cleanup related to testing. [Daniel Lindsley]
3726
3727- Fixed an error in the docs related to pre-rendering data. [Daniel
3728  Lindsley]
3729
3730- Added Pegasus News to Who Uses. [Daniel Lindsley]
3731
3732- Corrected an import in forms for consistency. Thanks to bkonkle for
3733  pointing this out. [Daniel Lindsley]
3734
3735- Fixed bug where passing a customized ``site`` would not make it down
3736  through the whole stack. Thanks to Peter Bengtsson for the report and
3737  original patch. [Daniel Lindsley]
3738
3739- Bumped copyright years. [Daniel Lindsley]
3740
3741- Changed Whoosh backend so most imports will raise the correct
3742  exception. Thanks to shabda for the suggestion. [Daniel Lindsley]
3743
3744- Refactored Solr's tests to minimize reindexes. Runs ~50% faster.
3745  [Daniel Lindsley]
3746
3747- Fixed a couple potential circular imports. [Daniel Lindsley]
3748
3749- The same field can now have multiple query facets. Thanks to bfirsh
3750  for the original patch. [Daniel Lindsley]
3751
3752- Added schema for testing Solr. [Daniel Lindsley]
3753
3754- Fixed a string interpolation bug when adding an invalid data facet.
3755  Thanks to simonw for the original patch. [Daniel Lindsley]
3756
3757- Fixed the default highlighter to give slightly better results,
3758  especially with short strings. Thanks to RobertGawron for the original
3759  patch. [Daniel Lindsley]
3760
3761- Changed the ``rebuild_index`` command so it can take all options that
3762  can be passed to either ``clear_index`` or ``update_index``. Thanks to
3763  brosner for suggesting this. [Daniel Lindsley]
3764
3765- Added ``--noinput`` flag to ``clear_index``. Thanks to aljosa for the
3766  suggestion. [Daniel Lindsley]
3767
3768- Updated the example in the template to be a little more real-world and
3769  user friendly. Thanks to j0hnsmith for pointing this out. [Daniel
3770  Lindsley]
3771
3772- Fixed a bug with the Whoosh backend where scores weren't getting
3773  populated correctly. Thanks to horribtastic for the report. [Daniel
3774  Lindsley]
3775
3776- Changed ``EmptySearchQuerySet`` so it returns an empty list when
3777  slicing instead of mistakenly running queries. Thanks to askfor for
3778  reporting this bug. [Daniel Lindsley]
3779
3780- Switched ``SearchView`` & ``FacetedSearchView`` to use
3781  ``EmptySearchQuerySet`` (instead of a regular list) when there are no
3782  results. Thanks to acdha for the original patch. [Daniel Lindsley]
3783
3784- Added RedditGifts to "Who Uses". [Daniel Lindsley]
3785
3786- Added Winding Road to "Who Uses". [Daniel Lindsley]
3787
3788- Added ryszard's full name to AUTHORS. [Daniel Lindsley]
3789
3790- Added initialization bits to part of the Solr test suite. Thanks to
3791  notanumber for pointing this out. [Daniel Lindsley]
3792
3793- Started the 1.1-alpha work. Apologies for not doing this sooner.
3794  [Daniel Lindsley]
3795
3796- Added an advanced setting for disabling Haystack's initialization in
3797  the event of a conflict with other apps. [Daniel Lindsley]
3798
3799- Altered ``SearchForm`` to use ``.is_valid()`` instead of ``.clean()``,
3800  which is a more idiomatic/correct usage. Thanks to askfor for the
3801  suggestion. [Daniel Lindsley]
3802
3803- Added MANIFEST to ignore list. [Daniel Lindsley]
3804
3805- Fixed Django 1.0 compatibility when using the Solr backend. [Daniel
3806  Lindsley]
3807
3808- Marked Haystack as 1.0 final. [Daniel Lindsley]
3809
3810- Incorrect test result from changing the documented way the
3811  ``highlight`` template tag gets called. [Daniel Lindsley]
3812
3813- Updated the example in faceting documentation to provide better
3814  results and explanation on the reasoning. [Daniel Lindsley]
3815
3816- Added further documentation about
3817  ``SearchIndex``/``RealTimeSearchIndex``. [Daniel Lindsley]
3818
3819- Added docs about `SearchQuerySet.highlight`. [toastdriven]
3820
3821- Added further docs on `RealTimeSearchIndex`. [toastdriven]
3822
3823- Added documentation on the ``RealTimeSearchIndex`` class.
3824  [toastdriven]
3825
3826- Fixed the documentation for the arguments on the `highlight` tag.
3827  Thanks to lucalenardi for pointing this out. [Daniel Lindsley]
3828
3829- Fixed tutorial to mention where the `NoteSearchIndex` should be
3830  placed. Thanks to bkeating for pointing this out. [Daniel Lindsley]
3831
3832- Marked Haystack as 1.0.0 release candidate 1. [Daniel Lindsley]
3833
3834- Haystack now requires Whoosh 0.3.5. [Daniel Lindsley]
3835
3836- Last minute documentation cleanup. [Daniel Lindsley]
3837
3838- Added documentation about the management commands that come with
3839  Haystack. [Daniel Lindsley]
3840
3841- Added docs on the template tags included with Haystack. [Daniel
3842  Lindsley]
3843
3844- Added docs on highlighting. [Daniel Lindsley]
3845
3846- Removed some unneeded legacy code that was causing conflicts when
3847  Haystack was used with apps that load all models (such as `django-
3848  cms2`, `localemiddleware` or `django-transmeta`). [Daniel Lindsley]
3849
3850- Removed old code from the `update_index` command. [Daniel Lindsley]
3851
3852- Altered spelling suggestion test to something a little more
3853  consistent. [Daniel Lindsley]
3854
3855- Added tests for slicing the end of a `RelatedSearchQuerySet`. [Daniel
3856  Lindsley]
3857
3858- Fixed case where `SearchQuerySet.more_like_this` would fail when using
3859  deferred Models. Thanks to Alex Gaynor for the original patch. [Daniel
3860  Lindsley]
3861
3862- Added default logging bits to prevent "No handlers found" message.
3863  [Daniel Lindsley]
3864
3865- BACKWARD-INCOMPATIBLE: Renamed `reindex` management command to
3866  `update_index`, renamed `clear_search_index` management command to
3867  `clear_index` and added a `rebuild_index` command to both clear &
3868  reindex. [Daniel Lindsley]
3869
3870- BACKWARD-INCOMPATIBLE: `SearchIndex` no longer hooks up
3871  `post_save/post_delete` signals for the model it's registered with.
3872  [Daniel Lindsley]
3873
3874  If you use `SearchIndex`, you will have to manually cron up a `reindex` (soon to become `update_index`) management command to periodically refresh the data in your index.
3875
3876  If you were relying on the old behavior, please use `RealTimeSearchIndex` instead, which does hook up those signals.
3877
3878- Ensured that, if a `MultiValueField` is marked as `indexed=False` in
3879  Whoosh, it ought not to post-process the field. [Daniel Lindsley]
3880
3881- Ensured data going into the indexes round-trips properly. Fixed
3882  `DateField`/`DateTimeField` handling for all backends and
3883  `MultiValueField` handling in Whoosh. [Daniel Lindsley]
3884
3885- Added a customizable `highlight` template tag plus an underlying
3886  `Highlighter` implementation. [Daniel Lindsley]
3887
3888- Added more documentation about using custom `SearchIndex.prepare_FOO`
3889  methods. [Daniel Lindsley]
3890
3891- With Whoosh 0.3.5+, the number of open files is greatly reduced.
3892  [Daniel Lindsley]
3893
3894- Corrected example in docs about `RelatedSearchQuerySet`. Thanks to
3895  askfor for pointing this out. [Daniel Lindsley]
3896
3897- Altered `SearchResult` objects to fail gracefully when the
3898  model/object can't be found. Thanks to akrito for the report. [Daniel
3899  Lindsley]
3900
3901- Fixed a bug where `auto_query` would fail to escape strings that
3902  pulled out for exact matching. Thanks to jefftriplett for the report.
3903  [Daniel Lindsley]
3904
3905- Added Brick Design to Who Uses. [Daniel Lindsley]
3906
3907- Updated backend support docs slightly. [Daniel Lindsley]
3908
3909- Added the ability to combine `SearchQuerySet`s via `&` or `|`. Thanks
3910  to reesefrancis for the suggestion. [Daniel Lindsley]
3911
3912- Revised the most of the tutorial. [Daniel Lindsley]
3913
3914- Better documented how user-provided data should be sanitized. [Daniel
3915  Lindsley]
3916
3917- Fleshed out the `SearchField` documentation. [Daniel Lindsley]
3918
3919- Fixed formatting on ``SearchField`` documentation. [Daniel Lindsley]
3920
3921- Added basic ``SearchField`` documentation. [Daniel Lindsley]
3922
3923  More information about the kwargs and usage will be eventually needed.
3924
3925- Bumped the `ulimit` so Whoosh tests pass consistently on Mac OS X.
3926  [Daniel Lindsley]
3927
3928- Fixed the `default` kwarg in `SearchField` (and subclasses) to work
3929  properly from a user's perspective. [Daniel Lindsley]
3930
3931- BACKWARD-INCOMPATIBLE: Fixed ``raw_search`` to cooperate when
3932  paginating/slicing as well as many other conditions. [Daniel Lindsley]
3933
3934  This no longer immediately runs the query, nor pokes at any internals. It also now takes into account other details, such as sorting & faceting.
3935
3936- Fixed a bug in the Whoosh backend where slicing before doing a hit
3937  count could cause strange results when paginating. Thanks to
3938  kylemacfarlane for the original patch. [Daniel Lindsley]
3939
3940- The Whoosh tests now deal with the same data set as the Solr tests and
3941  cover various aspects better. [Daniel Lindsley]
3942
3943- Started to pull out the real-time, signal-based updates out of the
3944  main `SearchIndex` class. Backward compatible for now. [Daniel
3945  Lindsley]
3946
3947- Fixed docs to include `utils` documentation. [Daniel Lindsley]
3948
3949- Updated instructions for installing `pysolr`. Thanks to sboisen for
3950  pointing this out. [Daniel Lindsley]
3951
3952- Added acdha to AUTHORS for previous commit. [Daniel Lindsley]
3953
3954- Added exception handling to the Solr Backend to silently fail/log when
3955  Solr is unavailable. Thanks to acdha for the original patch. [Daniel
3956  Lindsley]
3957
3958- The `more_like_this` tag is now tested within the suite. Also has lots
3959  of cleanup for the other Solr tests. [Daniel Lindsley]
3960
3961- On both the Solr & Whoosh backends, don't do an update if there's
3962  nothing being updated. [Daniel Lindsley]
3963
3964- Moved Haystack's internal fields out of the backends and into
3965  `SearchIndex.prepare`. [Daniel Lindsley]
3966
3967  This is both somewhat more DRY as well as a step toward Haystack being useful to non-Django projects.
3968
3969- Fixed a bug in the `build_schema` where fields that aren't supposed to
3970  be indexed are still getting post-procesed by Solr. Thanks to Jonathan
3971  Slenders for the report. [Daniel Lindsley]
3972
3973- Added HUGE to Who Uses. [Daniel Lindsley]
3974
3975- Fixed bug in Whoosh where it would always generate spelling
3976  suggestions off the full query even when given a different query
3977  string to check against. [Daniel Lindsley]
3978
3979- Simplified the SQ object and removed a limitation on kwargs/field
3980  names that could be passed in. Thanks to traviscline for the patch.
3981  [Daniel Lindsley]
3982
3983- Documentation on `should_update` fixed to match the new signature.
3984  Thanks to kylemacfarlane for pointing this out. [Daniel Lindsley]
3985
3986- Fixed missing words in Best Practices documentation. Thanks to
3987  frankwiles for the original patch. [Daniel Lindsley]
3988
3989- The `update_object` method now passes along kwargs as needed to the
3990  `should_update` method. Thanks to askfor for the suggestion. [Daniel
3991  Lindsley]
3992
3993- Updated docs about the removal of the Whoosh fork. [Daniel Lindsley]
3994
3995- Removed extraneous `BadSearchIndex3` from test suite. Thanks
3996  notanumber! [Daniel Lindsley]
3997
3998- We actually want `repr`, not `str`. [Daniel Lindsley]
3999
4000- Pushed the `model_attr` check lower down into the `SearchField`s and
4001  make it occur later, so that exceptions come at a point where Django
4002  can better deal with them. [Daniel Lindsley]
4003
4004- Fixed attempting to access an invalid `model_attr`. Thanks to
4005  notanumber for the original patch. [Daniel Lindsley]
4006
4007- Added SQ objects (replacing the QueryFilter object) as the means to
4008  generate queries/query fragments. Thanks to traviscline for all the
4009  hard work. [Daniel Lindsley]
4010
4011  The SQ object is similar to Django's Q object and allows for arbitrarily complex queries. Only backward incompatible if you were relying on the SearchQuery/QueryFilter APIs.
4012
4013- Reformatted debugging docs a bit. [Daniel Lindsley]
4014
4015- Added debugging information about the Whoosh lock error. [Daniel
4016  Lindsley]
4017
4018- Brought the TODO up to date. [Daniel Lindsley]
4019
4020- Added a warning to the documentation about how `__startswith` may not
4021  always provide the expected results. Thanks to codysoyland for
4022  pointing this out. [Daniel Lindsley]
4023
4024- Added debugging documentation, with more examples coming in the
4025  future. [Daniel Lindsley]
4026
4027- Added a new `basic_search` view as a both a working example of how to
4028  write traditional views and as a thread-safe view, which the class-
4029  based ones may/may not be. [Daniel Lindsley]
4030
4031- Fixed sample template in the documentation. Thanks to lemonad for
4032  pointing this out. [Daniel Lindsley]
4033
4034- Updated documentation to include a couple more Sphinx directives.
4035  Index is now more useful. [Daniel Lindsley]
4036
4037- Made links more obvious in documentation. [Daniel Lindsley]
4038
4039- Added an `example_project` demonstrating how a sample project might be
4040  setup. [Daniel Lindsley]
4041
4042- Fixed `load_backend` to use the argument passed instead of always the
4043  `settings.HAYSTACK_SEARCH_ENGINE`. Thanks to newgene for the report.
4044  [Daniel Lindsley]
4045
4046- Regression where sometimes `narrow_queries` got juggled into a list
4047  when it should be a set everywhere. Thanks tcline & ericholscher for
4048  the report. [Daniel Lindsley]
4049
4050- Updated the Whoosh backend's version requirement to reflect the fully
4051  working version of Whoosh. [Daniel Lindsley]
4052
4053- With the latest SVN version of Whoosh (r344), `SearchQuerySet()` now
4054  works properly in Whoosh. [Daniel Lindsley]
4055
4056- Added a `FacetedModelSearchForm`. Thanks to mcroydon for the original
4057  patch. [Daniel Lindsley]
4058
4059- Added translation capabilities to the `SearchForm` variants. Thanks to
4060  hejsan for pointing this out. [Daniel Lindsley]
4061
4062- Added AllForLocal to Who Uses. [Daniel Lindsley]
4063
4064- The underlying caching has been fixed so it no longer has to fill the
4065  entire cache before it to ensure consistency. [Daniel Lindsley]
4066
4067  This results in significantly faster slicing and reduced memory usage. The test suite is more complete and ensures this functionality better.
4068
4069  This also removes `load_all_queryset` from the main `SearchQuerySet` implementation. If you were relying on this behavior, you should use `RelatedSearchQuerySet` instead.
4070
4071- Log search queries with `DEBUG = True` for debugging purposes, similar
4072  to what Django does. [Daniel Lindsley]
4073
4074- Updated LJ's Who Uses information. [Daniel Lindsley]
4075
4076- Added Sunlight Labs & NASA to the Who Uses list. [Daniel Lindsley]
4077
4078- Added Eldarion to the Who Uses list. [Daniel Lindsley]
4079
4080- When more of the cache is populated, provide a more accurate `len()`
4081  of the `SearchQuerySet`. This ought to only affect advanced usages,
4082  like excluding previously-registered models or `load_all_queryset`.
4083  [Daniel Lindsley]
4084
4085- Fixed a bug where `SearchQuerySet`s longer than `REPR_OUTPUT_SIZE`
4086  wouldn't include a note about truncation when `__repr__` is called.
4087  [Daniel Lindsley]
4088
4089- Added the ability to choose which site is used when reindexing. Thanks
4090  to SmileyChris for pointing this out and the original patch. [Daniel
4091  Lindsley]
4092
4093- Fixed the lack of a `__unicode__` method on `SearchResult` objects.
4094  Thanks to mint_xian for pointing this out. [Daniel Lindsley]
4095
4096- Typo'd the setup.py changes. Thanks to jlilly for catching that.
4097  [Daniel Lindsley]
4098
4099- Converted all query strings to Unicode for Whoosh. Thanks to simonw108
4100  for pointing this out. [Daniel Lindsley]
4101
4102- Added template tags to `setup.py`. Thanks to Bogdan for pointing this
4103  out. [Daniel Lindsley]
4104
4105- Added two more tests to the Whoosh backend, just to make sure. [Daniel
4106  Lindsley]
4107
4108- Corrected the way Whoosh handles `order_by`. Thanks to Rowan for
4109  pointing this out. [Daniel Lindsley]
4110
4111- For the Whoosh backend, ensure the directory is writable by the
4112  current user to try to prevent failed writes. [Daniel Lindsley]
4113
4114- Added a better label to the main search form field. [Daniel Lindsley]
4115
4116- Bringing the Whoosh backend up to version 0.3.0b14. This version of
4117  Whoosh has better query parsing, faster indexing and, combined with
4118  these changes, should cause fewer disruptions when used in a
4119  multiprocess/multithreaded environment. [Daniel Lindsley]
4120
4121- Added optional argument to `spelling_suggestion` that lets you provide
4122  a different query than the one built by the SearchQuerySet. [Daniel
4123  Lindsley]
4124
4125  Useful for passing along a raw user-provided query, especially when there is a lot of post-processing done.
4126
4127- SearchResults now obey the type of data chosen in their corresponding
4128  field in the SearchIndex if present. Thanks to evgenius for the
4129  original report. [Daniel Lindsley]
4130
4131- Fixed a bug in the Solr backend where submitting an empty string to
4132  search returned an ancient and incorrect datastructure. Thanks kapa77
4133  for the report. [Daniel Lindsley]
4134
4135- Fixed a bug where the cache would never properly fill due to the
4136  number of results returned being lower than the hit count. This could
4137  happen when there were results excluded due to being in the index but
4138  the model NOT being registered in the `SearchSite`. Thanks akrito and
4139  tcline for the report. [Daniel Lindsley]
4140
4141- Altered the docs to look more like the main site. [Daniel Lindsley]
4142
4143- Added a (short) list of who uses Haystack. Would love to have more on
4144  this list. [Daniel Lindsley]
4145
4146- Fixed docs on preparing data. Thanks fud. [Daniel Lindsley]
4147
4148- Added the `ModelSearchIndex` class for easier `SearchIndex`
4149  generation. [Daniel Lindsley]
4150
4151- Added a note about using possibly unsafe data with `filter/exclude`.
4152  Thanks to ryszard for pointing this out. [Daniel Lindsley]
4153
4154- Standardized the API on `date_facet`. Thanks to notanumber for the
4155  original patch. [Daniel Lindsley]
4156
4157- Moved constructing the schema down to the `SearchBackend` level. This
4158  allows more flexibility when creating a schema. [Daniel Lindsley]
4159
4160- Fixed a bug where a hyphen provided to `auto_query` could break the
4161  query string. Thanks to ddanier for the report. [Daniel Lindsley]
4162
4163- BACKWARD INCOMPATIBLE - For consistency, `get_query_set` has been
4164  renamed to `get_queryset` on `SearchIndex` classes. [Daniel Lindsley]
4165
4166  A simple search & replace to remove the underscore should be all that is needed.
4167
4168- Missed two bits while updating the documentation for the Xapian
4169  backend. [Daniel Lindsley]
4170
4171- Updated documentation to add the Xapian backend information. A big
4172  thanks to notatnumber for all his hard work on the Xapian backend.
4173  [Daniel Lindsley]
4174
4175- Added `EmptySearchQuerySet`. Thanks to askfor for the suggestion!
4176  [Daniel Lindsley]
4177
4178- Added "Best Practices" documentation. [Daniel Lindsley]
4179
4180- Added documentation about the `HAYSTACK_SITECONF` setting. [Daniel
4181  Lindsley]
4182
4183- Fixed erroneous documentation on Xapian not supporting boost. Thanks
4184  notanumber! [Daniel Lindsley]
4185
4186- BACKWARD INCOMPATIBLE - The `haystack.autodiscover()` and other site
4187  modifications now get their own configuration file and should no
4188  longer be placed in the `ROOT_URLCONF`. Thanks to SmileyChris for the
4189  original patch and patrys for further feedback. [Daniel Lindsley]
4190
4191- Added `verbose_name_plural` to the `SearchResult` object. [Daniel
4192  Lindsley]
4193
4194- Added a warning about ordering by integers with the Whoosh backend.
4195  [Daniel Lindsley]
4196
4197- Added a note about ordering and accented characters. [Daniel Lindsley]
4198
4199- Updated the `more_like_this` tag to allow for narrowing the models
4200  returned by the tag. [Daniel Lindsley]
4201
4202- Fixed `null=True` for `IntegerField` and `FloatField`. Thanks to
4203  ryszard for the report and original patch. [Daniel Lindsley]
4204
4205- Reverted aabdc9d4b98edc4735ed0c8b22aa09796c0a29ab as it would cause
4206  mod_wsgi environments to fail in conjunction with the admin on Django
4207  1.1. [Daniel Lindsley]
4208
4209- Added the start of a glossary of terminology. [Daniel Lindsley]
4210
4211- Various documentation fixes. Thanks to sk1p & notanumber. [Daniel
4212  Lindsley]
4213
4214- The `haystack.autodiscover()` and other site modifications may now be
4215  placed in ANY URLconf, not just the `ROOT_URLCONF`. Thanks to
4216  SmileyChris for the original patch. [Daniel Lindsley]
4217
4218- Fixed invalid/empty pages in the SearchView. Thanks to joep and
4219  SmileyChris for patches. [Daniel Lindsley]
4220
4221- Added a note and an exception about consistent fieldnames for the
4222  document field across all `SearchIndex` classes. Thanks sk1p_! [Daniel
4223  Lindsley]
4224
4225- Possible thread-safety fix related to registration handling. [Daniel
4226  Lindsley]
4227
4228- BACKWARD INCOMPATIBLE - The 'boost' method no longer takes kwargs.
4229  This makes boost a little more useful by allowing advanced terms.
4230  [Daniel Lindsley]
4231
4232  To migrate code, convert multiple kwargs into separate 'boost' calls, quote what was the key and change the '=' to a ','.
4233
4234- Updated documentation to match behavioral changes to MLT. [Daniel
4235  Lindsley]
4236
4237- Fixed a serious bug in MLT on Solr. Internals changed a bit and now
4238  things work correctly. [Daniel Lindsley]
4239
4240- Removed erroneous 'zip_safe' from setup.py. Thanks ephelon. [Daniel
4241  Lindsley]
4242
4243- Added `null=True` to fields, allowing you to ignore/skip a field when
4244  indexing. Thanks to Kevin for the original patch. [Daniel Lindsley]
4245
4246- Fixed a standing test failure. The dummy setup can't do `load_all` due
4247  to mocking. [Daniel Lindsley]
4248
4249- Added initial `additional_query` to MLT to allow for narrowing
4250  results. [Daniel Lindsley]
4251
4252- Fixed nasty bug where results would get duplicated due to cached
4253  results. [Daniel Lindsley]
4254
4255- Altered `ITERATOR_LOAD_PER_QUERY` from 20 to 10. [Daniel Lindsley]
4256
4257- Corrected tutorial when dealing with fields that have
4258  `use_template=True`. [Daniel Lindsley]
4259
4260- Updated documentation to reflect basic Solr setup. [Daniel Lindsley]
4261
4262- Fix documentation on grabbing Whoosh and on the 'load_all' parameter
4263  for SearchForms. [Daniel Lindsley]
4264
4265- Fixed bug where the '__in' filter wouldn't work with phrases or data
4266  types other than one-word string/integer. [Daniel Lindsley]
4267
4268- Fixed bug so that the 'load_all' option in 'SearchView' now actually
4269  does what it says it should. How embarrassing... [Daniel Lindsley]
4270
4271- Added ability to specify custom QuerySets for loading records via
4272  'load_all'/'load_all_queryset'. [Daniel Lindsley]
4273
4274- Fixed a bug where results from non-registered models could appear in
4275  the results. [Daniel Lindsley]
4276
4277- BACKWARD INCOMPATIBLE - Changed 'module_name' to 'model_name'
4278  throughout Haystack related to SearchResult objects. Only incompatible
4279  if you were relying on this attribute. [Daniel Lindsley]
4280
4281- Added the ability to fetch additional and stored fields from a
4282  SearchResult as well as documentation on the SearchResult itself.
4283  [Daniel Lindsley]
4284
4285- Added the ability to look through relations in SearchIndexes via '__'.
4286  [Daniel Lindsley]
4287
4288- Added note about the 'text' fieldname convention. [Daniel Lindsley]
4289
4290- Added an 'update_object' and 'remove_object' to the SearchSite objects
4291  as a shortcut. [Daniel Lindsley]
4292
4293- Recover gracefully from queries Whoosh judges to be invalid. [Daniel
4294  Lindsley]
4295
4296- Missed test from previous commit. [Daniel Lindsley]
4297
4298- Added stemming support to Whoosh. [Daniel Lindsley]
4299
4300- Removed the commented version. [Daniel Lindsley]
4301
4302- Django 1.0.X compatibility fix for the reindex command. [Daniel
4303  Lindsley]
4304
4305- Reindexes should now consume a lot less RAM. [Daniel Lindsley]
4306
4307  Evidently, when you run a ton of queries touching virtually everything in your DB, you need to clean out the "logged" queries from the connection. Sad but true.
4308
4309- Altered `SearchBackend.remove` and `SearchBackend.get_identifier` to
4310  accept an object or a string identifier (in the event the object is no
4311  longer available). [Daniel Lindsley]
4312
4313  This is useful in an environment where you no longer have the original object on hand and know what it is you wish to delete.
4314
4315- Added a simple (read: ghetto) way to run the test suite without having
4316  to mess with settings. [Daniel Lindsley]
4317
4318- Added a setting `HAYSTACK_BATCH_SIZE` to control how many objects are
4319  processed at once when running a reindex. [Daniel Lindsley]
4320
4321- Fixed import that was issuing a warning. [Daniel Lindsley]
4322
4323- Further tests to make sure `unregister` works appropriately as well,
4324  just to be paranoid. [Daniel Lindsley]
4325
4326- Fixed a bizarre bug where backends may see a different site object
4327  than the rest of the application code. THIS REQUIRES SEARCH &
4328  REPLACING ALL INSTANCES OF `from haystack.sites import site` TO `from
4329  haystack import site`. [Daniel Lindsley]
4330
4331  No changes needed if you've been using `haystack.autodiscover()`.
4332
4333- Pushed save/delete signal registration down to the SearchIndex level.
4334  [Daniel Lindsley]
4335
4336  This should make it easier to alter how individual indexes are setup, allowing you to queue updates, prevent deletions, etc. The internal API changed slightly.
4337
4338- Created a default 'clean' implementation, as the first three (and soon
4339  fourth) backends all use identical code. [Daniel Lindsley]
4340
4341- Updated tests to match new 'model_choices'. [Daniel Lindsley]
4342
4343- Added timeout support to Solr. [Daniel Lindsley]
4344
4345- Capitalize the Models in the model_choices. [Daniel Lindsley]
4346
4347- Removed unnecessary import. [Daniel Lindsley]
4348
4349- No longer need to watch for DEBUG in the 'haystack_info' command.
4350  [Daniel Lindsley]
4351
4352- Fixed bug in Whoosh backend when spelling suggestions are disabled.
4353  [Daniel Lindsley]
4354
4355- Added a "clear_search_index" management command. [Daniel Lindsley]
4356
4357- Removed comments as pysolr now supports timeouts and the other comment
4358  no longer applies. [Daniel Lindsley]
4359
4360- Removed Solr-flavored schema bits. [Daniel Lindsley]
4361
4362  Still need to work out a better way to handle user created fields that don't fit neatly into subclassing one of the core Field types.
4363
4364- Moved informational messages to a management command to behave better
4365  when using dumpdata or wsgi. [Daniel Lindsley]
4366
4367- Changed some Solr-specific field names. Requires a reindex. [Daniel
4368  Lindsley]
4369
4370- Typo'd docstring. [Daniel Lindsley]
4371
4372- Removed empty test file from spelling testing. [Daniel Lindsley]
4373
4374- Documentation for getting spelling support working on Solr. [Daniel
4375  Lindsley]
4376
4377- Initial spelling support added. [Daniel Lindsley]
4378
4379- Added a 'more_like_this' template tag. [Daniel Lindsley]
4380
4381- Removed an unnecessary 'run'. This cause MLT (and potentially
4382  'raw_search') to fail by overwriting the results found. [Daniel
4383  Lindsley]
4384
4385- Added Whoosh failure. Needs inspecting. [Daniel Lindsley]
4386
4387- Finally added views/forms documentation. A touch rough still. [Daniel
4388  Lindsley]
4389
4390- Fixed a bug in FacetedSearchView where a SearchQuerySet method could
4391  be called on an empty list instead. [Daniel Lindsley]
4392
4393- More faceting documentation. [Daniel Lindsley]
4394
4395- Started faceting documentation. [Daniel Lindsley]
4396
4397- Updated docs to finally include details about faceting. [Daniel
4398  Lindsley]
4399
4400- Empty or one character searches in Whoosh returned the wrong data
4401  structure. Thanks for catching this, silviogutierrez! [Daniel
4402  Lindsley]
4403
4404- Added scoring to Whoosh now that 0.1.20+ support it. [Daniel Lindsley]
4405
4406- Fixed a bug in the Solr tests due to recent changes in pysolr. [Daniel
4407  Lindsley]
4408
4409- Added documentation on the 'narrow' method. [Daniel Lindsley]
4410
4411- Added additional keyword arguments on raw_search. [Daniel Lindsley]
4412
4413- Added 'narrow' support in Whoosh. [Daniel Lindsley]
4414
4415- Fixed Whoosh backend's handling of pre-1900 dates. Thanks JoeGermuska!
4416  [Daniel Lindsley]
4417
4418- Backed out the Whoosh quoted dates patch. [Daniel Lindsley]
4419
4420  Something still seems amiss in the Whoosh query parser, as ranges and dates together don't seem to get parsed together properly.
4421
4422- Added a small requirements section to the docs. [Daniel Lindsley]
4423
4424- Added notes about enabling the MoreLikeThisHandler within Solr.
4425  [Daniel Lindsley]
4426
4427- Revised how tests are done so each backend now gets its own test app.
4428  [Daniel Lindsley]
4429
4430  All tests pass once again.
4431
4432- Added 'startswith' filter. [Daniel Lindsley]
4433
4434- Fixed the __repr__ method on QueryFilters. Thanks JoeGermuska for the
4435  original patch! [Daniel Lindsley]
4436
4437- BACKWARDS INCOMPATIBLE - Both the Solr & Whoosh backends now provide
4438  native Python types back in SearchResults. [Daniel Lindsley]
4439
4440  This also allows Whoosh to use native types better from the 'SearchQuerySet' API itself.
4441
4442  This unfortunately will also require all Whoosh users to reindex, as the way some data (specifically datetimes/dates but applicable to others) is stored in the index.
4443
4444- SearchIndexes now support inheritance. Thanks smulloni! [Daniel
4445  Lindsley]
4446
4447- Added FacetedSearchForm to make handling facets easier. [Daniel
4448  Lindsley]
4449
4450- Heavily refactored the SearchView to take advantage of being a class.
4451  [Daniel Lindsley]
4452
4453  It should now be much easier to override bits without having to copy-paste the entire __call__ method, which was more than slightly embarrassing before.
4454
4455- Fixed Solr backend so that it properly converts native Python types to
4456  something Solr can handle. Thanks smulloni for the original patch!
4457  [Daniel Lindsley]
4458
4459- SearchResults now include a verbose name for display purposes. [Daniel
4460  Lindsley]
4461
4462- Fixed reverse order_by's when using Whoosh. Thanks matt_c for the
4463  original patch. [Daniel Lindsley]
4464
4465- Handle Whoosh stopwords behavior when provided a single character
4466  query string. [Daniel Lindsley]
4467
4468- Lightly refactored tests to only run engines with their own settings.
4469  [Daniel Lindsley]
4470
4471- Typo'd the tutorial when setting up your own SearchSite. Thanks
4472  mcroydon! [Daniel Lindsley]
4473
4474- Altered loading statements to only display when DEBUG is True. [Daniel
4475  Lindsley]
4476
4477- Write to STDERR where appropriate. Thanks zerok for suggesting this
4478  change. [Daniel Lindsley]
4479
4480- BACKWARD INCOMPATIBLE - Altered the search query param to 'q' instead
4481  of 'query'. Thanks simonw for prompting this change. [Daniel Lindsley]
4482
4483- Removed the Whoosh patch in favor of better options. Please see the
4484  documentation. [Daniel Lindsley]
4485
4486- Added Whoosh patch for 0.1.15 to temporarily fix reindexes. [Daniel
4487  Lindsley]
4488
4489- Altered the reindex command to handle inherited models. Thanks
4490  smulloni! [Daniel Lindsley]
4491
4492- Removed the no longer needed Whoosh patch. [Daniel Lindsley]
4493
4494  Whoosh users should upgrade to the latest Whoosh (0.1.15) as it fixes the issues that the patch covers as well as others.
4495
4496- Documented the 'content' shortcut. [Daniel Lindsley]
4497
4498- Fixed an incorrect bit of documentation on the default operator
4499  setting. Thanks benspaulding! [Daniel Lindsley]
4500
4501- Added documentation about Haystack's various settings. [Daniel
4502  Lindsley]
4503
4504- Corrected an issue with the Whoosh backend that can occur when no
4505  indexes are registered. Now provides a better exception. [Daniel
4506  Lindsley]
4507
4508- Documentation fixes. Thanks benspaulding! [Daniel Lindsley]
4509
4510- Fixed Whoosh patch, which should help with the "KeyError" exceptions
4511  when searching with models. Thanks Matias Costa! [Daniel Lindsley]
4512
4513- Improvements to the setup.py. Thanks jezdez & ask! [Daniel Lindsley]
4514
4515- Fixed the .gitignore. Thanks ask! [Daniel Lindsley]
4516
4517- FacetedSearchView now inherits from SearchView. Thanks cyberdelia!
4518  [Daniel Lindsley]
4519
4520  This will matter much more soon, as SearchView is going to be refactored to be more useful and extensible.
4521
4522- Documentation fixes. [Daniel Lindsley]
4523
4524- Altered the whoosh patch. Should apply cleanly now. [Daniel Lindsley]
4525
4526- Better linking to the search engine installation notes. [Daniel
4527  Lindsley]
4528
4529- Added documentation on setting up the search engines. [Daniel
4530  Lindsley]
4531
4532- Provide an exception when importing a backend dependency fails. Thanks
4533  brosner for the initial patch. [Daniel Lindsley]
4534
4535- Yay stupid typos! [Daniel Lindsley]
4536
4537- Relicensing under BSD. Thanks matt_c for threatening to use my name in
4538  an endorsement of a derived product! [Daniel Lindsley]
4539
4540- Fixed a bug in ModelSearchForm. Closes #1. Thanks dotsphinx! [Daniel
4541  Lindsley]
4542
4543- Added link to pysolr binding. [Daniel Lindsley]
4544
4545- Refined documentation on preparing SearchIndex data. [Daniel Lindsley]
4546
4547- Changed existing references from 'model_name' to 'module_name'.
4548  [Daniel Lindsley]
4549
4550  This was done to be consistent both internally and with Django. Thanks brosner!
4551
4552- Documentation improvements. Restyled and friendlier intro page.
4553  [Daniel Lindsley]
4554
4555- Added documentation on preparing data. [Daniel Lindsley]
4556
4557- Additions and re-prioritizing the TODO list. [Daniel Lindsley]
4558
4559- Added warnings to Whoosh backend in place of silently ignoring
4560  unsupported features. [Daniel Lindsley]
4561
4562- Corrected Xapian's capabilities. Thanks richardb! [Daniel Lindsley]
4563
4564- BACKWARD INCOMPATIBLE - Altered all settings to be prefixed with
4565  HAYSTACK_. Thanks Collin! [Daniel Lindsley]
4566
4567- Test cleanup from previous commits. [Daniel Lindsley]
4568
4569- Changed the DEFAULT_OPERATOR back to 'AND'. Thanks richardb! [Daniel
4570  Lindsley]
4571
4572- Altered the way registrations get handled. [Daniel Lindsley]
4573
4574- Various fixes. Thanks brosner! [Daniel Lindsley]
4575
4576- Added new 'should_update' method to documentation. [Daniel Lindsley]
4577
4578- Added 'should_update' method to SearchIndexes. [Daniel Lindsley]
4579
4580  This allows you to control, on a per-index basis, what conditions will cause an individual object to reindex. Useful for models that update frequently with changes that don't require indexing.
4581
4582- Added FAQ docs. [Daniel Lindsley]
4583
4584- Alter Whoosh backend to commit regardless. This avoids locking issues
4585  that can occur on higher volume sites. [Daniel Lindsley]
4586
4587- A more efficient implementation of index clearing in Whoosh. [Daniel
4588  Lindsley]
4589
4590- Added details about settings needed in settings.py. [Daniel Lindsley]
4591
4592- Added setup.py. Thanks cyberdelia for prompting it. [Daniel Lindsley]
4593
4594- Reindex management command now can reindex a limited range (like last
4595  24 hours). Thanks traviscline. [Daniel Lindsley]
4596
4597- More things to do. [Daniel Lindsley]
4598
4599- Documentation formatting fixes. [Daniel Lindsley]
4600
4601- Added SearchBackend docs. [Daniel Lindsley]
4602
4603- Corrected reST formatting. [Daniel Lindsley]
4604
4605- Additional TODO's. [Daniel Lindsley]
4606
4607- Initial SearchIndex documentation. [Daniel Lindsley]
4608
4609- Formally introduced the TODO. [Daniel Lindsley]
4610
4611- Updated backend support list. [Daniel Lindsley]
4612
4613- Added initial documentation for SearchSites. [Daniel Lindsley]
4614
4615- Changed whoosh backend to fix limiting sets. Need to revisit someday.
4616  [Daniel Lindsley]
4617
4618- Added patch for Whoosh backend and version notes in documentation.
4619  [Daniel Lindsley]
4620
4621- Initial Whoosh backend complete. [Daniel Lindsley]
4622
4623  Does not yet support highlighting or scoring.
4624
4625- Removed some unnecessary dummy code. [Daniel Lindsley]
4626
4627- Work on trying to get the default site to load reliably in all cases.
4628  [Daniel Lindsley]
4629
4630- Trimmed down the urls for tests now that the dummy backend works
4631  correctly. [Daniel Lindsley]
4632
4633- Dummy now correctly loads the right SearchBackend. [Daniel Lindsley]
4634
4635- Removed faceting from the default SearchView. [Daniel Lindsley]
4636
4637- Refactored tests so they are no longer within the haystack app.
4638  [Daniel Lindsley]
4639
4640  Further benefits include less mocking and haystack's tests no longer contributing overall testing of end-user apps. Documentation included.
4641
4642- Removed old comment. [Daniel Lindsley]
4643
4644- Fixed a potential race condition. Also, since there's no way to tell
4645  when everything is ready to go in Django, adding an explicit call to
4646  SearchQuerySet's __init__ to force the site to load if it hasn't
4647  already. [Daniel Lindsley]
4648
4649- More tests on models() support. [Daniel Lindsley]
4650
4651- Pulled schema building out into the site to leverage across backends.
4652  [Daniel Lindsley]
4653
4654- Altered backend loading for consistency with Django and fixed the
4655  long-incorrect-for-non-obvious-and-tedious-reasons version number.
4656  Still beta but hopefully that changes soon. [Daniel Lindsley]
4657
4658- Missed a spot when fixing SearchSites. [Daniel Lindsley]
4659
4660- BACKWARD INCOMPATIBLE - Created a class name conflict during the last
4661  change (double use of ``SearchIndex``). Renamed original
4662  ``SearchIndex`` to ``SearchSite``, which is slightly more correct
4663  anyhow. [Daniel Lindsley]
4664
4665  This will only affect you if you've custom built sites (i.e. not used ``autodiscover()``.
4666
4667- More documentation. Started docs on SearchQuery. [Daniel Lindsley]
4668
4669- Further fleshed out SearchQuerySet documentation. [Daniel Lindsley]
4670
4671- BACKWARD INCOMPATIBLE (2 of 2) - Altered autodiscover to search for
4672  'search_indexes.py' instead of 'indexes.py' to prevent collisions and
4673  be more descriptive. [Daniel Lindsley]
4674
4675- BACKWARD INCOMPATIBLE (1 of 2) - The ModelIndex class has been renamed
4676  to be SearchIndex to make room for future improvements. [Daniel
4677  Lindsley]
4678
4679- Fleshed out a portion of the SearchQuerySet documentation. [Daniel
4680  Lindsley]
4681
4682- SearchQuerySet.auto_query now supports internal quoting for exact
4683  matches. [Daniel Lindsley]
4684
4685- Fixed semi-serious issue with SearchQuery objects, causing bits to
4686  leak from one query to the next when cloning. [Daniel Lindsley]
4687
4688- Altered Solr port for testing purposes. [Daniel Lindsley]
4689
4690- Now that Solr and core feature set are solid, moved haystack into beta
4691  status. [Daniel Lindsley]
4692
4693- Added simple capabilities for retrieving facets back. [Daniel
4694  Lindsley]
4695
4696- Bugfix to make sure model choices don't get loaded until after the
4697  IndexSite is populated. [Daniel Lindsley]
4698
4699- Initial faceting support complete. [Daniel Lindsley]
4700
4701- Query facets tested. [Daniel Lindsley]
4702
4703- Bugfix to (field) facets. [Daniel Lindsley]
4704
4705  Using a dict is inappropriate, as the output from Solr
4706  is sorted by count. Now using a two-tuple.
4707
4708- Backward-incompatible changes to faceting. Date-based faceting is now
4709  present. [Daniel Lindsley]
4710
4711- Solr implementation of faceting started. Needs more tests. [Daniel
4712  Lindsley]
4713
4714- Initial faceting support in place. Needs more thought and a Solr
4715  implementation. [Daniel Lindsley]
4716
4717- Unbreak iterables in queries. [Daniel Lindsley]
4718
4719- Bugfixes for Unicode handling and loading deleted models. [Daniel
4720  Lindsley]
4721
4722- Fixed bug in Solr's run method. [Daniel Lindsley]
4723
4724- Various bug fixes. [Daniel Lindsley]
4725
4726- Backward-Incompatible: Refactored ModelIndexes to allow greater
4727  customization before indexing. See "prepare()" methods. [Daniel
4728  Lindsley]
4729
4730- Updated "build_solr_schema" command for revised fields. [Daniel
4731  Lindsley]
4732
4733- Refactored SearchFields. Lightly backwards-incompatible. [Daniel
4734  Lindsley]
4735
4736- No more duplicates from the "build_solr_schema" management command.
4737  [Daniel Lindsley]
4738
4739- Removed the kwargs. Explicit is better than implicit. [Daniel
4740  Lindsley]
4741
4742- Tests for highlighting. [Daniel Lindsley]
4743
4744- Added initial highlighting support. Needs tests and perhaps a better
4745  implementation. [Daniel Lindsley]
4746
4747- Started "build_solr_schema" command. Needs testing with more than one
4748  index. [Daniel Lindsley]
4749
4750- Argh. ".select_related()" is killing reindexes. Again. [Daniel
4751  Lindsley]
4752
4753- Stored fields now come back as part of the search result. [Daniel
4754  Lindsley]
4755
4756- Fixed Solr's SearchQuery.clean to handle reserved words more
4757  appropriately. [Daniel Lindsley]
4758
4759- Filter types seem solid and have tests. [Daniel Lindsley]
4760
4761- App renamed (for namespace/sanity/because it's really different
4762  reasons). [Daniel Lindsley]
4763
4764- Started trying to support the various filter types. Needs testing and
4765  verification. [Daniel Lindsley]
4766
4767- Fixed tests in light of the change to "OR". [Daniel Lindsley]
4768
4769- Readded "select_related" to reindex command. [Daniel Lindsley]
4770
4771- I am a moron. [Daniel Lindsley]
4772
4773- "OR" is now the default operator. Also, "auto_query" now handles
4774  not'ed keywords. [Daniel Lindsley]
4775
4776- "More Like This" now implemented and functioning with Solr backend.
4777  [Daniel Lindsley]
4778
4779- Removed broken references to __name__. [Daniel Lindsley]
4780
4781- Internal documentation fix. [Daniel Lindsley]
4782
4783- Solr backend can now clear on a per-model basis. [Daniel Lindsley]
4784
4785- Solr backend tests fleshed out. Initial stability of Solr. [Daniel
4786  Lindsley]
4787
4788  This needs more work (as does everything) but it seems to be working reliably from my testing (both unit and "real-world"). Onward and upward.
4789
4790- Massive renaming/refactoring spree. Tests 100% passing again. [Daniel
4791  Lindsley]
4792
4793- Renamed BaseSearchQuerySet to SearchQuerySet. Now requires
4794  instantiation. [Daniel Lindsley]
4795
4796- Standardizing syntax. [Daniel Lindsley]
4797
4798- Backend support update. [Daniel Lindsley]
4799
4800- An attempt to make sure the main IndexSite is always setup, even
4801  outside web requests. Also needs improvement. [Daniel Lindsley]
4802
4803- Reindexes now work. [Daniel Lindsley]
4804
4805- Some painful bits to make things work for now. Needs improvement.
4806  [Daniel Lindsley]
4807
4808- Support kwargs on the search. [Daniel Lindsley]
4809
4810- Move solr backend tests in prep for fully testing the backend. [Daniel
4811  Lindsley]
4812
4813- Some ContentField/StoredField improvements. [Daniel Lindsley]
4814
4815  StoredFields now have a unique template per field (as they should have from the start) and there's a touch more checking. You can also now override the template name for either type of field.
4816
4817- Fixed backend loading upon unpickling SearchBackend. [Daniel Lindsley]
4818
4819- Tweak internal doc. [Daniel Lindsley]
4820
4821- MOAR DOCS. [Daniel Lindsley]
4822
4823- Internal documentation and cleanup. Also alters the behavior of
4824  SearchQuerySet's "order_by" method slightly, bringing it more in-line
4825  with QuerySet's behavior. [Daniel Lindsley]
4826
4827- Documentation/license updates. [Daniel Lindsley]
4828
4829- Fixed ModelIndexes and created tests for them. 100% tests passing
4830  again. [Daniel Lindsley]
4831
4832- Started refactoring ModelIndexes. Needs tests (and possibly a little
4833  love). [Daniel Lindsley]
4834
4835- Implemented Solr's boost, clean, multiple order-by. Fixed Solr's score
4836  retrieval (depends on custom pysolr) and exact match syntax. [Daniel
4837  Lindsley]
4838
4839- Minor changes/cleanup. [Daniel Lindsley]
4840
4841- Updated docs and a FIXME. [Daniel Lindsley]
4842
4843- SearchView/SearchForm tests passing. [Daniel Lindsley]
4844
4845- Changed BaseSearchQuery to accept a SearchBackend instance instead of
4846  the class. [Daniel Lindsley]
4847
4848- Better dummy implementation, a bugfix to raw_search and
4849  SearchView/SearchForm tests. [Daniel Lindsley]
4850
4851- Temporarily changed the Solr backend to ignore fields. Pysolr will
4852  need a patch and then reenable this. [Daniel Lindsley]
4853
4854- Merge branch 'master' of
4855  ssh://daniel@mckenzie/home/daniel/djangosearch_refactor into HEAD.
4856  [Daniel Lindsley]
4857
4858- Started SearchView tests and added URLconf. [Daniel Lindsley]
4859
4860- Started SearchView tests and added URLconf. [Daniel Lindsley]
4861
4862- Added note about basic use. Needs refactoring. [Matt Croydon]
4863
4864- Merged index.rst. [Matt Croydon]
4865
4866- Fixed result lookups when constructing a SearchResult. [Daniel
4867  Lindsley]
4868
4869- Added more docs. [Daniel Lindsley]
4870
4871- Added FIXME for exploration on Solr backend. [Daniel Lindsley]
4872
4873- Solr's SearchQuery now handles phrases (exact match). [Daniel
4874  Lindsley]
4875
4876- More work on the Solr backend. [Daniel Lindsley]
4877
4878- Added more imports for future test coverage. [Daniel Lindsley]
4879
4880- Added stubs for backend tests. [Daniel Lindsley]
4881
4882- Documentation updates. [Daniel Lindsley]
4883
4884- Refactored forms/views. Needs tests. [Daniel Lindsley]
4885
4886- Removed old entries in .gitignore. [Daniel Lindsley]
4887
4888- Implemented load_all. [Daniel Lindsley]
4889
4890- Fixed query result retrieval. [Daniel Lindsley]
4891
4892- Updated documentation index and tweaked overview formatting. [Matt
4893  Croydon]
4894
4895- Slight docs improvements. [Daniel Lindsley]
4896
4897- Started work on Solr backend. [Daniel Lindsley]
4898
4899- Ignore _build. [Matt Croydon]
4900
4901- Refactored documentation to format better in Sphinx. [Matt Croydon]
4902
4903- Added _build to .gitignore. [Matt Croydon]
4904
4905- Added sphinx config for documentation. [Matt Croydon]
4906
4907- Verified _fill_cache behavior. 100% test pass. [Daniel Lindsley]
4908
4909- Added a couple new desirable bits of functionality. Mostly stubbed.
4910  [Daniel Lindsley]
4911
4912- Removed fixme and updated docs. [Daniel Lindsley]
4913
4914- Removed an old reference to SearchPaginator. [Daniel Lindsley]
4915
4916- Updated import paths to new backend Base* location. [Daniel Lindsley]
4917
4918- Relocated base backend classes to __init__.py for consistency with
4919  Django. [Daniel Lindsley]
4920
4921- BaseSearchQuerySet initial API complete and all but working. One
4922  failing test related to caching results. [Daniel Lindsley]
4923
4924- Added new (improved?) template path for index templates. [Daniel
4925  Lindsley]
4926
4927- Removed SearchPaginator, as it no longer provides anything over the
4928  standard Django Paginator. [Daniel Lindsley]
4929
4930- Added len/iter support to BaseSearchQuerySet. Need to finish getitem
4931  support and test. [Daniel Lindsley]
4932
4933- Started to update ModelIndex. [Daniel Lindsley]
4934
4935- Started to alter dummy to match new class names/API. [Daniel Lindsley]
4936
4937- Little bits of cleanup. [Daniel Lindsley]
4938
4939- Added overview of where functionality belongs in djangosearch. This
4940  should likely make it's way into other docs and go away eventually.
4941  [Daniel Lindsley]
4942
4943- BaseSearchQuery now tracks filters via QueryFilter objects. Tests
4944  complete for QueryFilter and nearly complete for BaseSearchQuery.
4945  [Daniel Lindsley]
4946
4947- Started docs on creating new backends. [Daniel Lindsley]
4948
4949- Started tests for BaseSearchQuery and BaseSearchQuerySet. [Daniel
4950  Lindsley]
4951
4952- Fixed site loading. [Daniel Lindsley]
4953
4954- More work on the Base* classes. [Daniel Lindsley]
4955
4956- Started docs on creating new backends. [Daniel Lindsley]
4957
4958- Yet more work on BaseSearchQuerySet. Now with fewer FIXMEs. [Daniel
4959  Lindsley]
4960
4961- More work on BaseSearchQuerySet and added initial BaseSearchQuery
4962  object. [Daniel Lindsley]
4963
4964- Removed another chunk of SearchPaginator as SearchQuerySet becomes
4965  more capable. Hopefully, SearchPaginator will simply go away soon.
4966  [Daniel Lindsley]
4967
4968- Fixed ModelSearchForm to check the site's registered models. [Daniel
4969  Lindsley]
4970
4971- Reenabled how other backends might load. [Daniel Lindsley]
4972
4973- Added ignores. [Daniel Lindsley]
4974
4975- Started documenting what backends are supported and what they can do.
4976  [Daniel Lindsley]
4977
4978- More work on SearchQuerySet. [Daniel Lindsley]
4979
4980- More renovation and IndexSite's tests pass 100%. [Daniel Lindsley]
4981
4982- Fleshed out sites tests. Need to setup environment in order to run
4983  them. [Daniel Lindsley]
4984
4985- Started adding tests. [Daniel Lindsley]
4986
4987- First blush at SearchQuerySet. Non-functional, trying to lay out API
4988  and basic funationality. [Daniel Lindsley]
4989
4990- Removed old results.py in favor of the coming SearchQuerySet. [Daniel
4991  Lindsley]
4992
4993- Noted future improvements on SearchPaginator. [Daniel Lindsley]
4994
4995- Removed old reference to autodiscover and added default site a la NFA.
4996  [Daniel Lindsley]
4997
4998- Commented another use of RELEVANCE. [Daniel Lindsley]
4999
5000- Little backend tweaks. [Daniel Lindsley]
5001
5002- Added autodiscover support. [Daniel Lindsley]
5003
5004- Readded management command. [Daniel Lindsley]
5005
5006- Added SearchView and ModelSearchForm back in. Needs a little work.
5007  [Daniel Lindsley]
5008
5009- Readded results. Need to look at SoC for ideas. [Daniel Lindsley]
5010
5011- Readded paginator. Needs docs/tests. [Daniel Lindsley]
5012
5013- Readded core backends + solr. Will add others as they reach 100%
5014  functionality. [Daniel Lindsley]
5015
5016- Added ModelIndex back in. Customized to match new setup. [Daniel
5017  Lindsley]
5018
5019- Added signal registration as well as some introspection capabilities.
5020  [Daniel Lindsley]
5021
5022- Initial commit. Basic IndexSite implementation complete. Needs tests.
5023  [Daniel Lindsley]
5024
5025
5026