- hanke: Let’s go live, wohoo! :) See the prerelease history notes for all changes.
- hanke: (server) Renamed
Similarity::DoubleLevenshtone(akaSimilarity::Phonetic) toSimilarity::DoubleMetaphone(BREAKING: Cannot useSimilarity::Phoneticanymore). - hanke: (server) Added
Similarity::Soundex. - hanke: (server) Added
Similarity::Metaphone.
- hanke: (client) Asterisks are correctly escaped before saved in the browser history.
- you: Give feedback, thanks! :)
- hanke: New major version number – see reasons for API change: http://florianhanke.com/blog/2011/03/16/pickys-adolescence.html.
- hanke: (server) (Breaking change)
Query::FullandQuery::Livehave been replaced by justSearch. So what you now do isroute /something/ => Search.new(index1, index2, ..., options). - hanke: (server) Pass in the
idsparam to define the amount of result ids you’d like. This is how you’d do it with curl:curl 'localhost:8080/books?query=test&ids=20'. 20 ids is the default. - hanke: (client) (Breaking change)
Picky::Client::FullandPicky::Client::Livehave been replaced byPicky::Client. New option:ids. Pass in to define the amount ofidsyou’d like. For a live query you need none, so pass in 0. (20 is the default in the server) - hanke: (generated clients) See client changes above. Replace
Picky::Client::FullandPicky::Client::Livewith just a singlePicky::Clientinstance with the same options as before (but just a single URL on the server as desribed above). - hanke: (generated servers) See server changes above. Replace
Query::FullandQuery::Liveinstance pairs by just a singleSearchinstance. - hanke: (client) Added
rake javascripts,rake updateto the client and client project generator which copies the javascripts from the client gem into your directory. (If you have an old generated project, addrequire 'picky-client/tasks'; Picky::Tasks::Javascripts.newin yourRakefile)
- hanke: (client) Not breaking the web anymore ;) Using history.js instead of address.js to do away with the hash bang.
- hanke: (server)
rake statsandrake analyze. Get information about your app.
- hanke: (server) When indexing from the database, the intermediary snapshot table is now called
"picky_#{index.identifier}_index"instead of"#{index.identifier}_type_index"to be clearer that it is Picky creating these tables, and what it is. You can remove the …_type_index tables. - hanke: (server) The database source now uses mostly AR adapter methods to make it more agnostic.
- hanke: (server) Picky now traverses more cleanly over your database data. (Thanks Jason Botwick!)
- hanke: (server) Redis backend.
- hanke: (server) The Redis backend uses db 15.
- hanke: (server) The mysql gem is used by default.
- hanke: (server) Fix for non-working picky command line interface. (Thanks Jason Botwick!)
- hanke: (server) Redis backend prototype.
- hanke: (server)
rake index:specific[index]orrake index:specific[index,category]to index just a specific index or category. - hanke: (server) Postgres source better handled.
- hanke: (client/generators) The
choicesoption is now localized. If you have generated a new Picky project with 1.4.0, please do localize yourchoiceslike so:choices:{ (formats here) }=>choices:{en:{ (formats here) }}and whatever locales you’d like to use.
- hanke: (client/generators) Latest Javascript PickyClient object includes the option to format the choices better, option
group: [['author', 'title', 'subjects'], ['publisher']]lets you group certain categories together while optionchoices: { 'title': format: "<strong>%1$s</strong>", filter: function(text) { return text.toUpperCase(); }, ignoreSingle: false }lets you define how each combination is handled in detail. Again, hard to explain, easy to see. (see issue for details, closes issue 9) - hanke: (client/generators) Added a
wrapResultsoptions where you can define wrapper HTML bits that are wrapped around each allocation group of<li>results. The default is:wrapResults: '<ol class="results"></ol>'. - hanke: (client/generators) Headers are now contracted, this means no more “written by florian and written by hanke”, but “written by florian hanke”. (closes issue 10)
- hanke: (client) Split #interface method into => #input, #results, so that users can wrap each with custom elements. Don’t forget to wrap into a div#picky.
- hanke: (generators, breaking change!) Example now constricts the Picky interface width using a div.content. Please use a wrapper div to constrict div#picky.
- hanke: (generators) Cleanup of Javascript code, inclusion of formerly external javascripts (
scrollTo,timer,jQuery 1.5). - hanke: (generators, possible breaking change!) Interface HTML structure refactor. Results should now be li-s. Result groups (combinations/allocations, around the result li-s) are each inside an ol.results. Please check your CSS files if they need to be adapted to the new structure.
- hanke: (generators) Cleanup of CSS, much more flexible and specific.
- hanke: (generators/client) In the generated Sinatra client, queries can be passed in through the query param q. Example: http://www.mysearch.com/?q=example
- hanke: (generators/client) In the generated sinatra client, the back/forward buttons work via jquery.address plugin. Closes github issue 6.
- hanke: (server/client) Server now sends the similar word instead of the original in similarity tokens (semelor~ → similar). Even if that means, that the original way of writing is not preserved (SEmElOr~ → similar). We’re trying to help people have good searches, so there.
- hanke: (all) Fixed description in the “picky” command. Also now shows optional parameters more clearly.
- hanke: (server) Ability to handle string/symbol keys (for future key/value store data sources).
- hanke: (server) Live interface uses select instead of sleep in the master process.
- hanke: (server) Offers a new routing API, an interface that permits changing parameters in the running server. Use
route %r{/admin} => Live::Interface.new. - hanke: (statistics) The statistics server is now called “Clam”, a chain smoking friend of Picky’s.
- hanke: (live) A new Gem “picky-live” that offers a live interface into the Picky server, provided you have a route for it. It is called “Suckerfish”, and is one of Picky’s friends, too.
- hanke: (server)
default_indexing(in the application.rb) provides a new optionreject_token_if => some_lambda, e.g.:reject_token_if: lambda { |token| token.nil? || token == :hello }where you can define which tokens go into the index, and which do not. Default lambda is:&:empty?. This means that only non-empty tokens are saved in the index. You could, for example, not save tokens that have length < 2 (since they might be too small for your purposes). Note that tokens are passed into the hash as symbols. - hanke: (statistics) Fixed a bug where the last line in the log file was counted once a second time after reloading the stats.
- hanke: (statistics) Slight interface redesign.
- hanke: (server) Fixed a bug where the partial strategy
Partial::Nonewas not correctly used: A query likePeterdid not return results even if “Peter” could be found using quotes: “Peter” (FYI, double quotes force Picky to use the exact index instead of the partial one. While, conversely, the asterisk* forces Picky to use the partial index instead of the exact one).
- hanke: (statistics) Statistics server handles logfile reading in a cleaner way when the gem has been installed by root.
- hanke: (statistics) (BETA) New statistics gem for Picky. Run
picky stats path/to/your/search.log [port]to start a statistics server. Go to http://localhost:4567 after running the command to take a look.
- hanke: (client) (BREAKING) Picky::Client::Base.search(:query => ‘bla’) has changed to Picky::Client::Base.search(‘bla’), as the query itself is not optional. The rest of the options is still passed in as a Hash through the second parameter.
- hanke: (server) Redefined API for 1.1.6 beta feature, ranged search.
- hanke: (documentation) API for #define_ranged_category.
- hanke: (server) Enabled beta feature “low/high limited range search”, see API RDoc (IndexAPI class).
- hanke: (server) Passing in a similarity search (e.g. with text “hello”) will never return “hello” as a similar token.
- hanke: (generators) Removed unnecessary jquery-1.3.2 from client, since it wasn’t referenced anyway.
- hanke: (server) The CouchDB source now uses a little trick/hack to make its ids work in Picky. They are translated into decimal numbers from its hex string representations. Recalculate using #to_s(16) before getting objects from CouchDB in a webapp.
- hanke: (generators) Added generator for empty unicorn projects, use
picky generate empty_unicorn_project <project_name>to generate one.
- hanke: (server and client) Removed generator projects that have been moved to picky-generators. Gems now much smaller :)
- hanke: (server and client) Generators extracted into picky-generators gem.
- hanke: (generators) Generators and example projects for both server and client.
- hanke: Lots of API RDoc.
- hanke: Yaaaay! Finally :)
- hanke: (server) Fixed cased file name (led to problems under Linux, thanks Bernd Schoeller)
- hanke: (server) New :from option. Assume you have a source
Sources::CSV.new(:title, file:'some_file.csv')but you want the category to be called differently. Use the from option as follows:define_category(:similar_title, :from => :title). - hanke: (server) CSV source uses
FasterCSV, passing through all its options (col_sep,row_sepet cetera). - hanke: (server) More understandable output for rake try, rake try:index, rake try:query.
- hanke: (server) Fixed a bug where the default qualifier definition (like the author in the query author:tolkien) for categories were ignored.
- hanke: (server) API change in application.rb: Use #define_category instead of #category on an index. (category still possible, but deprecated)
- hanke: (server) Internal rewrite.
- hanke: (server) Rake task index:check will check if all necessary index files are generated. (Nice to use before restarting.)
- hanke: (server) Better error reporting in Rake tasks. Task naming improved.
- hanke: (server) Internal cleanup.
- hanke: (server) Major API and internals rewrite. See generated project for help.
- hanke: (server) Source CouchDB added (thanks to github.com/stanley).
- hanke: (server) Typo fixed (thanks to github.com/stanley).
- hanke: (client) Helpful configuration page in the client at /configure.
- hanke: (server) Phonetic similarity (e.g. lyterature~) available through Similarity::Phonetic.new(4), see example.
- hanke: (server) :weights option for queries also ok in the form: { [:cat1, :cat2] => 4 }, where 4 is any weight.
- hanke: (server) (BREAKING) Total rewrite/exploration of the Application API.
Stay on 0.9.4 if you don’t want to update right now. - hanke: (server) Character substitution now configurable. Default is no character substitution.
- hanke: (server) rake routes: Shows all current URL paths, and if they are processable fast.
- hanke: (server) Fixed: Querying parameters are not ignored anymore.
- hanke: (client) Fixed result_hash.entries to return the right amount of entries.
- hanke: (client) The result_hash#entries now takes a block and replaces the e.g. AR instances with e.g rendered results.
- hanke: (client) Locale handling fixed. Uses the locale of the HTML tag by default.
- hanke: (server) Delicious missing gem notice if www-delicious gem is missing.
- hanke: (server)Partial::Subtoken renamed to Partial::Substring.
Options: down_to → from, starting_at → to - hanke: (server) Index bundle file handling extracted into specific Index::Files backend.
- hanke: (server/client) Jump to 0.9.0 to work on API, release 1.0.0 soon.
- hanke: (server) Partial indexing now only down to -3, e.g. florian → partial: floria, flori, flor.
If you want down_to the first character (florian, floria, flori, flor, flo, fl, f), use:
field(:some_field_name, :partial => Partial::Subtoken.new(:down_to => 1)) - hanke: (server) Sources::Delicious.new(user, pass) for indexing your delicious posts.
- hanke: (server) indexing and querying config now done on tokenizer instances.
- hanke: (server) Generator gives more informative NoGeneratorError message.
- hanke: (server) Uses json (index, index weights) and marshal (similarity index) to dump indexes.
- hanke: (server) Generator is more helpful (thanks to github.com/kschiess)
- hanke: (server) Generator for a Sinatra project. (picky-client sinatra project_name <- Note: Changed to picky generate sinatra_client project_name)
- hanke: (client) Helpful generator. (thanks to github.com/kschiess)
- hanke: (server) Indexing output, output in general cleaned up.
- hanke: (server) Better info after generating a new project (thanks kschiess).
- hanke: (server) Indexer now uses json for the dump files (much faster, slightly larger, thanks to github.com/niko).
- hanke: (client) JS files rewritten.
- hanke: (server) Explicit index buffering: Indexer hits filesystem only seldomly.
- hanke: (server) Internal rename from full index to exact index (visible in index filenames).
- hanke: (server) Solr Indexing removed until someone needs it. Then we’ll talk cash. Just kidding.
- hanke: (server) Improved Gemfile.
- hanke: (server) Umlaut handling (i.e. character substitution) now pluggable.
- hanke: (server) Apps finalization now handled through Ruby callback (thanks to github.com/severin).
- hanke: (server) Fix for negative partial index values (:partial => Partial::Subtoken.new(:down_to => -3))
- hanke: (server) Only uses JSON to encode results.
- hanke: (client) Only uses JSON for full and partial queries.
- hanke: (server) Application interface rewrite. See a freshly created
project (using picky project <- Note: Renamed picky generate unicorn_server ).
Application#add_index.
- hanke: (client) Cleanup. Frontend example.
- hanke: (server) Application#add_index instead of Application#type.
- hanke: (server) Simplified scaffolding.
- hanke: (server) Gem compiles on install. Do not compile on run.
- hanke: (server) Removed unnecessary gem dependencies (thanks to niko).
- hanke: (server) Added CSV to the possible Sources. Sources::CSV.new(:title, :author, :isbn, :file => ‘data/books.csv’),
- hanke: (server) Renamed all instances of SEARCH_* constants to PICKY_*. (Uses RACK_ENV)
- hanke: (server) config.ru, unicorn.ru now top level in newly created project (more standard).
- hanke: (server) Port now defined in unicorn.ru (use listen ‘host:port’).
- hanke: (client) Enriched callbacks in the JS interface definition (before, success, after).
- hanke: (client) Interface now created using Picky::Helper.interface or .cached_interface (if you only have a single language in your app).
- hanke: (server) C-Code cleaned up, removed warnings.
- hanke: (server) Newly created application better documented.
- hanke: (server/client) Initial project. Server (picky) and basic frontend client (picky-client) available.