Skip to content

v3.0.6

Compare
Choose a tag to compare
@pat pat released this 20 Oct 06:35
· 778 commits to develop since this release

Upgrading

From this point onwards, Thinking Sphinx requires Sphinx v2.0.5 or newer.

If you're using Sphinx 2.1.1 or newer, you should add the following to an initialiser:

ThinkingSphinx::SphinxQL.functions!

Sphinx 2.1.x releases no longer support special variables with the @ prefix - instead, there are equivalent functions. The code above switches Thinking Sphinx to use the functions instead.

If you're using Sphinx 2.1.2 or newer, you'll also want to add the following to your initializer (as 2.1.2 now returns strings as UTF-8 properly, so conversion isn't required):

ThinkingSphinx::Middlewares::DEFAULT.delete ThinkingSphinx::Middlewares::UTF8

And in your config/thinking_sphinx.yml file:

development:
  utf8: true
# repeat for each environment as necessary

All of these changes will become the default behaviour in Thinking Sphinx v3.1.0.

New features

  • MySQL users can enable a minimal GROUP BY statement, to speed up queries: set_property :minimal_group_by? => true.
  • search_for_ids can now be chained onto scoped search calls.
  • Added ability to switch between Sphinx special variables and the equivalent functions. Sphinx 2.1.x requires the latter, and that behaviour will become the default in Thinking Sphinx 3.1.0.
  • Added ability to disable UTF-8 forced encoding, now that Sphinx 2.1.2 returns UTF-8 strings by default. This will be disabled by default in Thinking Sphinx 3.1.0.
  • Added new search options in Sphinx 2.1.x.
  • skip_time_zone setting is now available per environment via config/thinking_sphinx.yml to avoid the sql_query_pre time zone command.
  • Raise an error if no indices match the search criteria (Bryan Ricker).

Changes to behaviour

  • Rake's silent mode is respected for indexing (@endoscient).
  • Insist on the log directory existing, to ensure correct behaviour for symlinked paths. (Michael Pearson).
  • Realtime fields and attributes now accept symbols as well as column objects, and fields can be sortable (with a _sort prefix for the matching attribute).
  • Automatically load Riddle's Sphinx 2.0.5 compatibility changes.
  • Don't clobber custom :select options for facet searches (Timo Virkkala).
  • Sphinx connection failures now have their own class, ThinkingSphinx::ConnectionError, instead of the standard Mysql2::Error.
  • Always use DISTINCT in group concatenation.
  • Have tests index UTF-8 characters where appropriate (Pedro Cunha).
  • Separated directory preparation from data generation for real-time index (re)generation tasks.
  • Updating Riddle dependency to be >= 1.5.9.

Bug fixes

  • Cast every column to a timestamp for timestamp attributes with multiple columns.
  • Don't use Sphinx ordering if SQL order option is supplied to a search.
  • Custom middleware and mask options now function correctly with model-scoped searches.
  • Suspended deltas now no longer update core indices as well.
  • Use alphabetical ordering for index paths consistently (@grin).
  • Convert very small floats to fixed format for geo-searches.