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