Picky 4.0 Tweet
Picky 4.0 release – a quick description of the goals and the changes from version 3.6.16. More to come later.
Goals
The ultimate goal of Picky is to become THE choice for a lightweight search engine, as flexible as possible, regarding the container on one hand (useable in a script/a Sinatra instance, a DRb server, wherever) and in itself on the other hand, offering a rich API where you plug in search engine behavior.
Release 4.0 is another big step towards these goals.
Thanks
Thanks to all who helped with this release! Among others: Roger Braun, Niko Dittmann, Kaspar Schiess, Glen Maddern.
Changes (tl;dr)
The one big change is that both the classic Picky application and classic Picky sources have been removed. If you need these, please continue using 3.6.16.
If you want to jump on 4.0, replace with a Sinatra app and convert your source into one that responds to #each (See the Wiki on sources).
Other important changes:
Picky::Index, optionweightshas been renamed toweight.- Picky uses the procrastinate gem to parallelize indexing.
Picky::Indexes.reload=>Picky::Indexes.load, analog onIndex,Category.- If you call any
define_*methods, please remove thedefine_part. - If you defined a
source { with a block }, the block is now evaluated each time the indexer runs on a category. - Rake task
rake index:parallelis used byrake index. If you can’t index in multiple processes, please userake index:serial.
Detailed Changes
This is for users that are currently on version 3.6.×. Extracted from the history.textile file:
- hanke: (server) BREAKING
Picky::Indexes.indexdoes not index in parallel anymore. - hanke: (server) BREAKING Renamed
Picky::Indexes.index_for_teststoPicky::Indexes.index. - hanke: (server) If you want to explicitly run parallel indexing programmatically, use
Picky::Indexes.index Picky::Scheduler.new(parallel: true)orPicky::Indexes[:index_name].index Picky::Scheduler.new(parallel: true). - hanke: (server) BREAKING Renamed
Picky::Wrappers::Category::ExactFirsttoPicky::Results::ExactFirst. Extend instead of wrap:index.extend Results::ExactFirstorcategory.extend Results::ExactFirst. If an index is extended, each category of the index will be extended. - hanke: (server) BREAKING
Picky::Indexes.reloadhas been renamed toPicky::Indexes.load. - hanke: (server) BREAKING
index.reloadhas been renamed toindex.load. - hanke: (server) BREAKING
category.reloadhas been renamed tocategory.load. - hanke: (server) BREAKING Removed all
define_...methods on indexes. - hanke: (server) BREAKING Removed Picky classic application. Please use Picky e.g. in a Sinatra app.
- hanke: (server) BREAKING Removed Picky classic sources. Please use a source with the #each method.
- hanke: (server) BREAKING Option
weightsfor thePicky::Index#categorymethod has been renamedweightto conform with the other methods. - hanke: (server) BREAKING Picky does not require the text gem anymore by default. Only when you use phonetic similarity. It will tell you what it needs.
- hanke: (server) BREAKING Added the PICKY_ENVIRONMENT in front of the Redis key namespace to differentiate the various environments.
- hanke: (server) BREAKING Removed
rake routessince only the classic server was able to provide it. - hanke: (server) BREAKING Removed the classic server from the generators.
- hanke: (server) BREAKING Reverting customizeable backends from version 3.3.2. They are no longer available. Please use simple subclassing to achieve funky backends.
- hanke: (server) BREAKING SQLite
self_indexedand Redisimmediateoption is now calledrealtime, as changes go directly through to the actual backends, in “realtime”. - hanke: (server) BREAKING The
tokenizeroption for a category has been renamed toindexing, to conform with the methods for the index and the sinatra app. - hanke: (server) BREAKING Internal
Similarity#encodedmethod has been renamed to#encode. - hanke: (statistics) Overhauled statistics interface. Use
picky statistics log/search.logto start it. - hanke: (server) The
Index#sourceblock is now evaluated every time an indexer runs. - hanke: (server) Explicitly uses
Yajl::Encoder#encodefor JSON encoding. - hanke: (server) Fixed cases where even when no similarity was defined on a category, similar results were still found.
- hanke: (server) Rake task
indexnow points to taskindex:parallelby default. Callrake:serialto index serially. - hanke: (server) Indexer calls
reconnect!on sources that support it. - hanke: (server) Location/Volumetric/Geosearch rewritten.
- hanke: (generators) Fixed integration specs for the generated “all in one” server/client.
- hanke: (generators) Changed method calls to adapt to above changes.
- hanke: (server) Using the
procrastinategem to parallelize indexing. - hanke: (server) Indexing call structure cleaned up. Improves performance by about 40%.
Share
Previous Picky Search Performance (Backends)