Katipo Project Survival Kit

External Search Sources Rails Engine

14 July 2009

Announcing the release of the External Search Sources Rails Engine developed by Katipo Communications for Kete, and funded by Digital New Zealand and Katipo.

http://github.com/kete/external_search_sources

What does it do?

The engine allows you to define search sources that are based on web services that return RSS feeds of their search results. An example search source is the Digital New Zealand content metadata aggregation service (http://search.digitalnz.org.nz/).

In your views, you can then call a helper method which is passed a search term string that is defined by your code. Your defined search sources will then be queried and their results will be presented.

This is an excellent way of displaying partner sites' related content along side your local search results.

There are a number of options that can be used to handle different search sources' boolean syntax and whether results should be cached locally.

If the results feed for a search source returns thumbnails, they will also be displayed.

How does it work?

The engine provides an administrative interface powered by ActiveScffold (http://activescaffold.com/). Administrators can add search sources which will be used to get results.

Put simply, a search source is an rss feed from another website. When it needs to get results, it adds the search term to the end of a base url. The base url needs to end in something similar to '&q=' . That resulting url is then fetched and parsed using a modified version of Feedzirra (http://github.com/kete/feedzirra), and output to html, which can then be styled using css to suit.

Requirements

Because we chose to go with a Rails engine and I18n support in this case, Rails 2.3 or higher is required to run the engine.

The administrative interface requires ActiveScaffold be installed and working as well.

Finally, the modified version of Feedzirra is needed (http://github.com/kete/feedzirra). We have found cases where certain feed elements weren't being detected, so we have added these to our own version of the gem and sent pull requests to the maintainers of the original gem.

Assumptions

The engine has some assumptions for authorization that can be easily reconfigured to suit your application.

It assumes you are using the authorization plugin (http://github.com/DocSavage/rails-authorization-plugin) and acts as authenticated (http://svn.techno-weenie.net/projects/plugins/acts_as_authenticated).

See the README.rdoc for more information.

So how do I install this?

Head on over to it's Github repository and checkout the README.rdoc file.

http://github.com/kete/external_search_sources

It has all the steps you need to get running with it as quickly as possible. It also has a heap of documentation about configurable settings, translating, styling id/classes, and testing.

Credits

This engine was co-designed by Katipo's Kete team: Kieran Pilkington (http://github.com/KieranP) and Walter McGinnis (http://github.com/walter).

Kieran did the implementation and testing. Walter provided guidance and implementation feedback.