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
, optionweights
has 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:parallel
is 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.index
does not index in parallel anymore. - hanke: (server) BREAKING Renamed
Picky::Indexes.index_for_tests
toPicky::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::ExactFirst
toPicky::Results::ExactFirst
. Extend instead of wrap:index.extend Results::ExactFirst
orcategory.extend Results::ExactFirst
. If an index is extended, each category of the index will be extended. - hanke: (server) BREAKING
Picky::Indexes.reload
has been renamed toPicky::Indexes.load
. - hanke: (server) BREAKING
index.reload
has been renamed toindex.load
. - hanke: (server) BREAKING
category.reload
has 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
weights
for thePicky::Index#category
method has been renamedweight
to 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 routes
since 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_indexed
and Redisimmediate
option is now calledrealtime
, as changes go directly through to the actual backends, in “realtime”. - hanke: (server) BREAKING The
tokenizer
option for a category has been renamed toindexing
, to conform with the methods for the index and the sinatra app. - hanke: (server) BREAKING Internal
Similarity#encoded
method has been renamed to#encode
. - hanke: (statistics) Overhauled statistics interface. Use
picky statistics log/search.log
to start it. - hanke: (server) The
Index#source
block is now evaluated every time an indexer runs. - hanke: (server) Explicitly uses
Yajl::Encoder#encode
for 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
index
now points to taskindex:parallel
by default. Callrake:serial
to 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
procrastinate
gem to parallelize indexing. - hanke: (server) Indexing call structure cleaned up. Improves performance by about 40%.
Share
Previous Picky Search Performance (Backends)