I've been playing with Blacklight, a catalog interface built on solr, this weekend with fairly positive results. After some initial frustration trying to figure out the demo data, I switched gears and connected Blacklight to my own solr data source, populated by a Fedora repository. Two initial kinks here were:
  • The unique identifier field `id` is hard-coded into Blacklight, while my existing data used the field name `PID`; see CODEBASE-171
  • The unique identifiers in my repository began with a qualified namespace in the form "org.example.repository", which broke the Ruby on Rails default routing system
My quick fix for the routing issue was to change the formatting requirements for the id field in the router, so my resource map now looks like:

  map.resources(:catalog,
    :only => [:index, :show, :update],
  […]
    :requirements => { :id => /([A-Za-z0-9]|-|\.)+:(([A-Za-z0-9])|-|~|_|(%[0-9A-F]{2}))+/ }
  )
The regular expression is a copy of the Fedora PID regular expression, but I've disallowed periods in the identifier name (but they are still legal in the namespace, which I imagine is common practice). There is still a fair bit of work hooking in object views, but the catalog + discovery portions were quickly and easily done.