<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Terry's Worklog &#187; LibraryFind</title>
	<atom:link href="http://people.oregonstate.edu/~reeset/blog/groups/libraryfind/feed" rel="self" type="application/rss+xml" />
	<link>http://people.oregonstate.edu/~reeset/blog</link>
	<description>On my work (programming, digital libraries, cataloging) and other stuff that perks my interest (family, cycling, etc)</description>
	<lastBuildDate>Sat, 21 Nov 2009 10:07:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>LibraryFind 0.9.2 update</title>
		<link>http://people.oregonstate.edu/~reeset/blog/archives/672</link>
		<comments>http://people.oregonstate.edu/~reeset/blog/archives/672#comments</comments>
		<pubDate>Sat, 27 Jun 2009 17:34:47 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[LibraryFind]]></category>

		<guid isPermaLink="false">http://oregonstate.edu/~reeset/blog/archives/672</guid>
		<description><![CDATA[I posted this update Thursday.&#160; It fixes some problems found in 0.9.1.&#160; The main issue with 0.9.1 was that the svn got foobared a little bit and some files needed for install were left out of the package.&#160; Files that were left out and errors that they caused:
1) migrations 031 &#38; 032 – would cause [...]]]></description>
			<content:encoded><![CDATA[<p>I posted this update Thursday.&#160; It fixes some problems found in 0.9.1.&#160; The main issue with 0.9.1 was that the svn got foobared a little bit and some files needed for install were left out of the package.&#160; Files that were left out and errors that they caused:</p>
<p>1) migrations 031 &amp; 032 – would cause a method not found error of is_private when adding/editing collections</p>
<p>2) QueryAPI note found – the services directory was left out</p>
<p>3) classic_pagination not found – the classic_pagination plugin was left out</p>
<p>&#160;</p>
<p>The errors were a bit of suprise because all the files were in the svn, but they had become weirdly locked.&#160; I had to run svn cleanup a few times and then switch branches between the dev and trunk to finally get everything synced up.&#160; But, I’ve had outside confirmation that everything is good now.&#160; So if you were trying to install 0.9.1 and had trouble, pick up 0.9.2.&#160; It should solve your problem.&#160; </p>
<p>You can find it at: <a href="http://www.libraryfind.org">http://www.libraryfind.org</a></p>
<p>&#160;</p>
<p>&#8211;TR</p>
]]></content:encoded>
			<wfw:commentRss>http://people.oregonstate.edu/~reeset/blog/archives/672/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LibraryFind 0.9.2 update coming</title>
		<link>http://people.oregonstate.edu/~reeset/blog/archives/671</link>
		<comments>http://people.oregonstate.edu/~reeset/blog/archives/671#comments</comments>
		<pubDate>Fri, 19 Jun 2009 20:20:05 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[LibraryFind]]></category>

		<guid isPermaLink="false">http://oregonstate.edu/~reeset/blog/archives/671</guid>
		<description><![CDATA[I’ve been getting some questions from a number of people trying to upgrade to LF 0.9.1 and it appears that our SVN has gone a little wonky.&#160; When I checked in the last set of changes, appearly, SVN marked a number of the files and keep the changes from moving from my development branch to [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been getting some questions from a number of people trying to upgrade to LF 0.9.1 and it appears that our SVN has gone a little wonky.&#160; When I checked in the last set of changes, appearly, SVN marked a number of the files and keep the changes from moving from my development branch to the trunk.&#160; The files in question are:</p>
<ol>
<li>app/services (the wsdl api element which will result in a queryapi missing error)</li>
<li>migrations 031 and 032 missing (resulting in an is_private undefined error on collection)</li>
<li>vendor/plugins/classic_pagination (resulting in a missing pagination reference).</li>
</ol>
<p>I’m sorting through the svn right now and will post an update to 0.9.2 by Monday that includes a few changes and the missing files.</p>
<p>&#160;</p>
<p>&#8211;TR</p>
]]></content:encoded>
			<wfw:commentRss>http://people.oregonstate.edu/~reeset/blog/archives/671/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LF WorldCat Connector</title>
		<link>http://people.oregonstate.edu/~reeset/blog/archives/625</link>
		<comments>http://people.oregonstate.edu/~reeset/blog/archives/625#comments</comments>
		<pubDate>Mon, 02 Mar 2009 08:09:28 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[LibraryFind]]></category>

		<guid isPermaLink="false">http://oregonstate.edu/~reeset/blog/archives/625</guid>
		<description><![CDATA[I’m going to spend some time getting the WorldCat API gem that I created before code4lib uploaded to rubyforge – but in the mean time, I’ve created a worldcat connector using this gem that is now in the LF 0.9 branch.&#160; 
For LF 0.9.5 – the big change will be something that I learned about [...]]]></description>
			<content:encoded><![CDATA[<p>I’m going to spend some time getting the WorldCat API gem that I created before code4lib uploaded to rubyforge – but in the mean time, I’ve created a worldcat connector using this gem that is now in the LF 0.9 branch.&#160; </p>
<p>For LF 0.9.5 – the big change will be something that I learned about at c4lib.&#160; Bess Sadler talked about how they were able to turn a rails product that they create into a plugin making installation easier using a rails engine.&#160; I’ve been looking over the documentation and this seems like something that will be very, very easy to do – so it will get done.&#160; That should make updating the program much, much easier going forward.</p>
<p>&#8211;TR</p>
]]></content:encoded>
			<wfw:commentRss>http://people.oregonstate.edu/~reeset/blog/archives/625/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I think I like mod_rails</title>
		<link>http://people.oregonstate.edu/~reeset/blog/archives/609</link>
		<comments>http://people.oregonstate.edu/~reeset/blog/archives/609#comments</comments>
		<pubDate>Mon, 05 Jan 2009 23:05:02 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[LibraryFind]]></category>

		<guid isPermaLink="false">http://oregonstate.edu/~reeset/blog/archives/609</guid>
		<description><![CDATA[I&#8217;ve been doing a little performance and memory benchmarking, but let me say that I think I like mod_rails.&#160; I&#8217;ll write up something a little bit later, but for distribution, mod_rails = sysadmin love.&#160; Just install a gem, run an installer and add 5&#160; lines to your httpd.conf file and your running.&#160; As a bonus, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing a little performance and memory benchmarking, but let me say that I think I like mod_rails.&nbsp; I&#8217;ll write up something a little bit later, but for distribution, mod_rails = sysadmin love.&nbsp; Just install a gem, run an installer and add 5&nbsp; lines to your httpd.conf file and your running.&nbsp; As a bonus, it&#8217;s even slightly faster than mongrel (though you pay for it with a slightly higher footprint upfront).&nbsp; Anyway, you got to love that.</p>
<p>Anyway, LibraryFind 0.9 is &#8220;finished&#8221;, having been migrated to Rails 2.2.2 on a server running mod_rails for testing.&nbsp; I&#8217;m going to be working to wrap this up this week (I hope) and move it from R&amp;D testing to public testing here in the library.&nbsp; And as an fyi &#8212; I have a few more cool changes to note &#8212; though those will be subject of a different post.</p>
<p>&nbsp;</p>
<p>&#8211;TR</p>
]]></content:encoded>
			<wfw:commentRss>http://people.oregonstate.edu/~reeset/blog/archives/609/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LibraryFind 0.9: SOAP and REST APIs</title>
		<link>http://people.oregonstate.edu/~reeset/blog/archives/604</link>
		<comments>http://people.oregonstate.edu/~reeset/blog/archives/604#comments</comments>
		<pubDate>Wed, 24 Dec 2008 09:09:59 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[LibraryFind]]></category>

		<guid isPermaLink="false">http://oregonstate.edu/~reeset/blog/archives/604</guid>
		<description><![CDATA[While LibraryFind has always supported SOAP, LibraryFind 0.9 will finish the process of adding json apis for all the SOAP based apis.&#160; This process started in LibraryFind 0.8.5.3 and continued in release 0.8.5.8 &#8212; but will be finished with 0.9.&#160; I&#8217;m working up documentation for the Json calls (which basically emulate the SOAP calls for [...]]]></description>
			<content:encoded><![CDATA[<p>While LibraryFind has always supported SOAP, LibraryFind 0.9 will finish the process of adding json apis for all the SOAP based apis.&nbsp; This process started in LibraryFind 0.8.5.3 and continued in release 0.8.5.8 &#8212; but will be finished with 0.9.&nbsp; I&#8217;m working up documentation for the Json calls (which basically emulate the SOAP calls for simplicity), so I&#8217;ll post the link once its finished.</p>
<p>&nbsp;</p>
<p>&#8211;TR</p>
]]></content:encoded>
			<wfw:commentRss>http://people.oregonstate.edu/~reeset/blog/archives/604/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LibraryFind 0.9: Using Custom Connectors to bridge non-standard collections</title>
		<link>http://people.oregonstate.edu/~reeset/blog/archives/603</link>
		<comments>http://people.oregonstate.edu/~reeset/blog/archives/603#comments</comments>
		<pubDate>Wed, 24 Dec 2008 09:00:18 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[LibraryFind]]></category>

		<guid isPermaLink="false">http://oregonstate.edu/~reeset/blog/archives/603</guid>
		<description><![CDATA[One of the tenants behind LibraryFind has always been that LibraryFind would only query materials that provide some kind of standard search protocol.&#160; However, there are many sites that provide API access, but it&#8217;s no a standard api access like OpenSearch for example.&#160; For example, a user wanting to query Yahoo or Flickr (where many [...]]]></description>
			<content:encoded><![CDATA[<p>One of the tenants behind LibraryFind has always been that LibraryFind would only query materials that provide some kind of standard search protocol.&nbsp; However, there are many sites that provide API access, but it&#8217;s no a standard api access like OpenSearch for example.&nbsp; For example, a user wanting to query Yahoo or Flickr (where many libraries are starting to build collections) would have previously been unable to use LibraryFind to query these resources.&nbsp; However, that will change with LibraryFind 0.9.&nbsp;&nbsp; LibraryFind 0.9 introduces a custom connectors framework, that will allow users (including OSU) to develop custom connectors to resources that utilize stable, formalized APIs within LibraryFind.&nbsp; </p>
<p>Configuring these new resources is easy.&nbsp; In the collection administration screen (note, this might change slightly), a user would simply note that the connection type is connector, and then name the connector in the Host area.&nbsp; From there, the user doesn&#8217;t need to define any other elements (though you can).&nbsp; </p>
<p><em>Admin Interface Example:</em></p>
<p><a href="http://oregonstate.edu/~reeset/blog/wp-content/mslive_images/LibraryFind0.9CustomConnectors_844/image.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="450" alt="image" src="http://oregonstate.edu/~reeset/blog/wp-content/mslive_images/LibraryFind0.9CustomConnectors_844/image_thumb.png" width="644" border="0"></a> </p>
<p>Once set, the application will utilize the connector as any other standard search class.&nbsp; So far example, I created a test group and queried my name using our IR, Flickr and Yahoo.&nbsp; Using these elements, I retrieve the following:</p>
<p><a href="http://oregonstate.edu/~reeset/blog/wp-content/mslive_images/LibraryFind0.9CustomConnectors_844/image_3.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="482" alt="image" src="http://oregonstate.edu/~reeset/blog/wp-content/mslive_images/LibraryFind0.9CustomConnectors_844/image_thumb_3.png" width="644" border="0"></a> </p>
<p>Here you can see an integration of Internet resources (from yahoo), images (from flickr) and Articles (our IR).&nbsp; Bringing Internet resources into the results complicates relevancy ranking (in part because there is so little metadata about the items being retrieved), but that&#8217;s something that I&#8217;ll worry about as we start to work with these items within the results set.</p>
<p>So how will this work.&nbsp; Well, I thought about going the plugin route (since Rails already provides a good model), but instead decided that I wanted to keep these custom search classes near the predefined search classes. So, in the environment.rb file, I defined an additional load_path under models (custom_connectors).&nbsp; Within this directory, users can drop their home made custom connectors for use by the application.&nbsp; </p>
<p>The connectors themselves must use the same format as the general search connector.&nbsp; Within the directory, I&#8217;ll include an example connector, but in a nutshell, the code generally looks like the following:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span># LibraryFind - Quality find done better.</pre>
<pre><span class="lnum">   2:  </span># Copyright (C) 2007 Oregon State University</pre>
<pre class="alt"><span class="lnum">   3:  </span>#         </pre>
<pre><span class="lnum">   4:  </span># This program is free software; you can redistribute it and/or modify it under </pre>
<pre class="alt"><span class="lnum">   5:  </span># the terms of the GNU General Public License as published by the Free Software </pre>
<pre><span class="lnum">   6:  </span># Foundation; either version 2 of the License, or (at your option) any later </pre>
<pre class="alt"><span class="lnum">   7:  </span># version.</pre>
<pre><span class="lnum">   8:  </span>#       </pre>
<pre class="alt"><span class="lnum">   9:  </span># This program is distributed in the hope that it will be useful, but WITHOUT </pre>
<pre><span class="lnum">  10:  </span># ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS </pre>
<pre class="alt"><span class="lnum">  11:  </span># FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</pre>
<pre><span class="lnum">  12:  </span># this program; if not, write to the Free Software Foundation, Inc., 59 Temple </pre>
<pre class="alt"><span class="lnum">  13:  </span># Place, Suite 330, Boston, MA 02111-1307 USA</pre>
<pre><span class="lnum">  14:  </span># </pre>
<pre class="alt"><span class="lnum">  15:  </span># Questions or comments on this program may be addressed to:</pre>
<pre><span class="lnum">  16:  </span>#   </pre>
<pre class="alt"><span class="lnum">  17:  </span># LibraryFind</pre>
<pre><span class="lnum">  18:  </span># 121 The Valley Library</pre>
<pre class="alt"><span class="lnum">  19:  </span># Corvallis OR 97331-4501</pre>
<pre><span class="lnum">  20:  </span>#</pre>
<pre class="alt"><span class="lnum">  21:  </span># http://libraryfind.org</pre>
<pre><span class="lnum">  22:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  23:  </span>require 'rubygems'</pre>
<pre><span class="lnum">  24:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  25:  </span>class ExampleSearchClass <span class="kwrd">&lt;</span> ActionController::Base</pre>
<pre><span class="lnum">  26:  </span>  @cObject = nil</pre>
<pre class="alt"><span class="lnum">  27:  </span>  @pkeyword = ""</pre>
<pre><span class="lnum">  28:  </span>  @feed_id = 0</pre>
<pre class="alt"><span class="lnum">  29:  </span>  @search_id = 0</pre>
<pre><span class="lnum">  30:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  31:  </span>    logger.debug("collection entered")</pre>
<pre><span class="lnum">  32:  </span>    @cObject = _collect</pre>
<pre class="alt"><span class="lnum">  33:  </span>    @pkeyword = _qstring.join(" ")</pre>
<pre><span class="lnum">  34:  </span>    @feed_id = _collect.id</pre>
<pre class="alt"><span class="lnum">  35:  </span>    @search_id = _last_id</pre>
<pre><span class="lnum">  36:  </span>    begin</pre>
<pre class="alt"><span class="lnum">  37:  </span>      #perform the search</pre>
<pre><span class="lnum">  38:  </span>      results = your_search(@pkeyword, _max.to_i)</pre>
<pre class="alt"><span class="lnum">  39:  </span>    rescue Exception =<span class="kwrd">&gt;</span> bang</pre>
<pre><span class="lnum">  40:  </span>      if _action_type != nil</pre>
<pre class="alt"><span class="lnum">  41:  </span>         _lxml = ""</pre>
<pre><span class="lnum">  42:  </span>         logger.debug("ID: " + _last_id.to_s)</pre>
<pre class="alt"><span class="lnum">  43:  </span>         return my_id, 0</pre>
<pre><span class="lnum">  44:  </span>      else</pre>
<pre class="alt"><span class="lnum">  45:  </span>         return nil</pre>
<pre><span class="lnum">  46:  </span>      end</pre>
<pre class="alt"><span class="lnum">  47:  </span>    end</pre>
<pre><span class="lnum">  48:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  49:  </span>    if results != nil</pre>
<pre><span class="lnum">  50:  </span>      begin</pre>
<pre class="alt"><span class="lnum">  51:  </span>         _lrecord = parse_yahoo(results)</pre>
<pre><span class="lnum">  52:  </span>      rescue Exception =<span class="kwrd">&gt;</span> bang</pre>
<pre class="alt"><span class="lnum">  53:  </span>        if _action_type != nil</pre>
<pre><span class="lnum">  54:  </span>           _lxml = ""</pre>
<pre class="alt"><span class="lnum">  55:  </span>           return my_id, 0</pre>
<pre><span class="lnum">  56:  </span>        else</pre>
<pre class="alt"><span class="lnum">  57:  </span>      end</pre>
<pre><span class="lnum">  58:  </span>    end</pre>
<pre class="alt"><span class="lnum">  59:  </span>&nbsp;</pre>
<pre><span class="lnum">  60:  </span>        _lxml = CachedSearch.build_cache_xml(_lrecord)</pre>
<pre class="alt"><span class="lnum">  61:  </span>&nbsp;</pre>
<pre><span class="lnum">  62:  </span>        if _lxml != nil: _lprint = true end</pre>
<pre class="alt"><span class="lnum">  63:  </span>        if _lxml == nil: _lxml = "" end</pre>
<pre><span class="lnum">  64:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  65:  </span>        #============================================</pre>
<pre><span class="lnum">  66:  </span>        # Add this info into the cache database</pre>
<pre class="alt"><span class="lnum">  67:  </span>        #============================================</pre>
<pre><span class="lnum">  68:  </span>        if _last_id.nil?</pre>
<pre class="alt"><span class="lnum">  69:  </span>                # FIXME:  Raise an error</pre>
<pre><span class="lnum">  70:  </span>                logger.debug("Error: _last_id should not be nil")</pre>
<pre class="alt"><span class="lnum">  71:  </span>        else</pre>
<pre><span class="lnum">  72:  </span>                status = LIBRARYFIND_CACHE_OK</pre>
<pre class="alt"><span class="lnum">  73:  </span>                if _lprint != true</pre>
<pre><span class="lnum">  74:  </span>                        status = LIBRARYFIND_CACHE_EMPTY</pre>
<pre class="alt"><span class="lnum">  75:  </span>                end</pre>
<pre><span class="lnum">  76:  </span>        end</pre>
<pre class="alt"><span class="lnum">  77:  </span>     else</pre>
<pre><span class="lnum">  78:  </span>        _lxml = ""</pre>
<pre class="alt"><span class="lnum">  79:  </span>     end</pre>
<pre><span class="lnum">  80:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  81:  </span>     if _action_type != nil</pre>
<pre><span class="lnum">  82:  </span>        if _lrecord != nil</pre>
<pre class="alt"><span class="lnum">  83:  </span>          return my_id, _lrecord.length</pre>
<pre><span class="lnum">  84:  </span>        else</pre>
<pre class="alt"><span class="lnum">  85:  </span>          return my_id, 0</pre>
<pre><span class="lnum">  86:  </span>        end</pre>
<pre class="alt"><span class="lnum">  87:  </span>     else</pre>
<pre><span class="lnum">  88:  </span>        return _lrecord</pre>
<pre class="alt"><span class="lnum">  89:  </span>     end</pre>
<pre><span class="lnum">  90:  </span>  end</pre>
<pre class="alt"><span class="lnum">  91:  </span>&nbsp;</pre>
<pre><span class="lnum">  92:  </span>  def self.strip_escaped_html(str, allow = [''])</pre>
<pre class="alt"><span class="lnum">  93:  </span>        str = str.gsub("&amp;#38;lt;", "<span class="kwrd">&lt;</span>")</pre>
<pre><span class="lnum">  94:  </span>        str = str.gsub("&amp;#38;gt;", "<span class="kwrd">&gt;</span>")</pre>
<pre class="alt"><span class="lnum">  95:  </span>        str = str.gsub("<span class="attr">&amp;lt;</span>", "<span class="kwrd">&lt;</span>")</pre>
<pre><span class="lnum">  96:  </span>        str = str.gsub("<span class="attr">&amp;gt;</span>", "<span class="kwrd">&gt;</span>")</pre>
<pre class="alt"><span class="lnum">  97:  </span>        str.strip || ''</pre>
<pre><span class="lnum">  98:  </span>        allow_arr = allow.join('|') <span class="kwrd">&lt;&lt;</span> '|\/'</pre>
<pre class="alt"><span class="lnum">  99:  </span>        str = str.gsub(/<span class="kwrd">&lt;</span>(\/|\s)*[^(#{allow_arr})][^<span class="kwrd">&gt;</span>]*<span class="kwrd">&gt;</span>/, ' ')</pre>
<pre><span class="lnum"> 100:  </span>        str = str.gsub("<span class="kwrd">&lt;</span>", "<span class="attr">&amp;lt;</span>")</pre>
<pre class="alt"><span class="lnum"> 101:  </span>        str = str.gsub("<span class="kwrd">&gt;</span>", "<span class="attr">&amp;gt;</span>")</pre>
<pre><span class="lnum"> 102:  </span>        return str</pre>
<pre class="alt"><span class="lnum"> 103:  </span>&nbsp;</pre>
<pre><span class="lnum"> 104:  </span>  def self.your_search(query, max)</pre>
<pre class="alt"><span class="lnum"> 105:  </span>    xml = yourquery(query, max)</pre>
<pre><span class="lnum"> 106:  </span>    _objRec = RecordSet.new()</pre>
<pre class="alt"><span class="lnum"> 107:  </span>    _title = ""</pre>
<pre><span class="lnum"> 108:  </span>    _authors = ""</pre>
<pre class="alt"><span class="lnum"> 109:  </span>    _description = ""</pre>
<pre><span class="lnum"> 110:  </span>    _subjects = ""</pre>
<pre class="alt"><span class="lnum"> 111:  </span>    _publisher = ""</pre>
<pre><span class="lnum"> 112:  </span>    _link = ""</pre>
<pre class="alt"><span class="lnum"> 113:  </span>&nbsp;</pre>
<pre><span class="lnum"> 114:  </span>    #Parse your data</pre>
<pre class="alt"><span class="lnum"> 115:  </span>    _start_time = Time.now()</pre>
<pre><span class="lnum"> 116:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum"> 117:  </span>    #loop through your results and populate Record.</pre>
<pre><span class="lnum"> 118:  </span>    nodes.each  { |item|</pre>
<pre class="alt"><span class="lnum"> 119:  </span>       begin</pre>
<pre><span class="lnum"> 120:  </span>          record = Record.new()</pre>
<pre class="alt"><span class="lnum"> 121:  </span>          record.vendor_name = @cObject.alt_name</pre>
<pre><span class="lnum"> 122:  </span>          record.ptitle = normalize(_yourtitle)</pre>
<pre class="alt"><span class="lnum"> 123:  </span>          record.title =  normalize(_yourtitle)</pre>
<pre><span class="lnum"> 124:  </span>          record.atitle =  ""</pre>
<pre class="alt"><span class="lnum"> 125:  </span>          record.issn =  ""</pre>
<pre><span class="lnum"> 126:  </span>          record.isbn = ""</pre>
<pre class="alt"><span class="lnum"> 127:  </span>          record.abstract = normalize(_yourdescription)</pre>
<pre><span class="lnum"> 128:  </span>          record.date = ""</pre>
<pre class="alt"><span class="lnum"> 129:  </span>          record.author = normalize(_yourauthors)</pre>
<pre><span class="lnum"> 130:  </span>          record.link = ""</pre>
<pre class="alt"><span class="lnum"> 131:  </span>          record.doi = ""</pre>
<pre><span class="lnum"> 132:  </span>          record.openurl = ""</pre>
<pre class="alt"><span class="lnum"> 133:  </span>          record.direct_url = normalize(_yourlink)</pre>
<pre><span class="lnum"> 134:  </span>          record.static_url = ""</pre>
<pre class="alt"><span class="lnum"> 135:  </span>          record.subject = normalize(_yoursubjects)</pre>
<pre><span class="lnum"> 136:  </span>          record.publisher = ""</pre>
<pre class="alt"><span class="lnum"> 137:  </span>          record.callnum = ""</pre>
<pre><span class="lnum"> 138:  </span>          record.vendor_url = normalize(@cObject.vendor_url)</pre>
<pre class="alt"><span class="lnum"> 139:  </span>          record.material_type = normalize(@cObject.mat_type)</pre>
<pre><span class="lnum"> 140:  </span>          record.volume = ""</pre>
<pre class="alt"><span class="lnum"> 141:  </span>          record.issue = ""</pre>
<pre><span class="lnum"> 142:  </span>          record.page = ""</pre>
<pre class="alt"><span class="lnum"> 143:  </span>          record.number = ""</pre>
<pre><span class="lnum"> 144:  </span>          record.start = _start_time.to_f</pre>
<pre class="alt"><span class="lnum"> 145:  </span>          record.end = Time.now().to_f</pre>
<pre><span class="lnum"> 146:  </span>          record.hits = _hit_count</pre>
<pre class="alt"><span class="lnum"> 147:  </span>          _record[_x] = record</pre>
<pre><span class="lnum"> 148:  </span>          _x = _x + 1</pre>
<pre class="alt"><span class="lnum"> 149:  </span>       rescue Exception =<span class="kwrd">&gt;</span> bang</pre>
<pre><span class="lnum"> 150:  </span>        logger.debug(bang)</pre>
<pre class="alt"><span class="lnum"> 151:  </span>        next</pre>
<pre><span class="lnum"> 152:  </span>       end</pre>
<pre class="alt"><span class="lnum"> 153:  </span>    }</pre>
<pre><span class="lnum"> 154:  </span>    return _record</pre>
<pre class="alt"><span class="lnum"> 155:  </span>&nbsp;</pre>
<pre><span class="lnum"> 156:  </span>  end</pre>
<pre class="alt"><span class="lnum"> 157:  </span>&nbsp;</pre>
<pre><span class="lnum"> 158:  </span>  def self.normalize(_string)</pre>
<pre class="alt"><span class="lnum"> 159:  </span>    return _string.gsub(/\W+$/,"") if _string != nil</pre>
<pre><span class="lnum"> 160:  </span>    return ""</pre>
<pre class="alt"><span class="lnum"> 161:  </span>    #_string = _string.gsub(/\W+$/,"")</pre>
<pre><span class="lnum"> 162:  </span>    #return _string</pre>
<pre class="alt"><span class="lnum"> 163:  </span>  end</pre>
<pre><span class="lnum"> 164:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum"> 165:  </span>end</pre>
</div>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<p>&nbsp;</p>
<p>However, within the custom_connectors directory, there will at least be the yahoo_search_class.rb and the flickr_search_class.rb which will provide sample code sets for users wanting to see how a custom_connector may be created.</p>
<p>Anyway, as I continue marching towards the release of the 0.9 code-base, I&#8217;ll continue to post some of the new functionality that folks should expect to see in the new version.&nbsp; </p>
<p>&nbsp;</p>
<p>&#8211;TR</p>
]]></content:encoded>
			<wfw:commentRss>http://people.oregonstate.edu/~reeset/blog/archives/603/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LibraryFind 0.9: Advanced Search Changes</title>
		<link>http://people.oregonstate.edu/~reeset/blog/archives/595</link>
		<comments>http://people.oregonstate.edu/~reeset/blog/archives/595#comments</comments>
		<pubDate>Thu, 18 Dec 2008 07:39:20 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[LibraryFind]]></category>

		<guid isPermaLink="false">http://oregonstate.edu/~reeset/blog/archives/595</guid>
		<description><![CDATA[A number of changes that will be present in LibraryFind 0.9 will be UI related.&#160; One of those changes will be seen in the Advanced Search page.&#160; The layout of the page has been changed significantly to make it easier for users to specify specific (or combined) queries, as well as make it easier for [...]]]></description>
			<content:encoded><![CDATA[<p>A number of changes that will be present in LibraryFind 0.9 will be UI related.&nbsp; One of those changes will be seen in the Advanced Search page.&nbsp; The layout of the page has been changed significantly to make it easier for users to specify specific (or combined) queries, as well as make it easier for users to select the materials that they want to query.</p>
<p><a href="http://oregonstate.edu/~reeset/blog/wp-content/mslive_images/LibraryFind0.9AdvancedSearchChanges_14B15/image.png" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="301" alt="image" src="http://oregonstate.edu/~reeset/blog/wp-content/mslive_images/LibraryFind0.9AdvancedSearchChanges_14B15/image_thumb.png" width="644" border="0"></a> </p>
<p>&nbsp;</p>
<p>&#8211;TR</p>
]]></content:encoded>
			<wfw:commentRss>http://people.oregonstate.edu/~reeset/blog/archives/595/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LibraryFind 0.9:  Embedding RSS query feeds</title>
		<link>http://people.oregonstate.edu/~reeset/blog/archives/594</link>
		<comments>http://people.oregonstate.edu/~reeset/blog/archives/594#comments</comments>
		<pubDate>Wed, 17 Dec 2008 06:06:24 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[LibraryFind]]></category>

		<guid isPermaLink="false">http://oregonstate.edu/~reeset/blog/archives/594</guid>
		<description><![CDATA[During the past development cycle, one of the most often requested items by our students and faculty has been the ability to watch a query for an extended period of time.&#160; In 0.9, this will be possible.&#160; At any point, a user can create an RSS feed of a specific search and add it to [...]]]></description>
			<content:encoded><![CDATA[<p>During the past development cycle, one of the most often requested items by our students and faculty has been the ability to watch a query for an extended period of time.&nbsp; In 0.9, this will be possible.&nbsp; At any point, a user can create an RSS feed of a specific search and add it to their feed reader.&nbsp; At this point, that output looks like the following:</p>
<p><a href="http://oregonstate.edu/~reeset/blog/wp-content/mslive_images/LibraryFind0.9EmbeddingRSSqueryfeeds_135ED/image.png" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="349" alt="image" src="http://oregonstate.edu/~reeset/blog/wp-content/mslive_images/LibraryFind0.9EmbeddingRSSqueryfeeds_135ED/image_thumb.png" width="644" border="0"></a> </p>
<p>&#8211;TR</p>
]]></content:encoded>
			<wfw:commentRss>http://people.oregonstate.edu/~reeset/blog/archives/594/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LibraryFind 0.8.5.8 posted</title>
		<link>http://people.oregonstate.edu/~reeset/blog/archives/592</link>
		<comments>http://people.oregonstate.edu/~reeset/blog/archives/592#comments</comments>
		<pubDate>Mon, 15 Dec 2008 08:11:16 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[LibraryFind]]></category>

		<guid isPermaLink="false">http://oregonstate.edu/~reeset/blog/archives/592</guid>
		<description><![CDATA[See: http://libraryfind.org/node/91 for information on what that entails.&#160; LibraryFind 0.9 is on track for the first of the year.
&#8211;TR
]]></description>
			<content:encoded><![CDATA[<p>See: <a title="http://libraryfind.org/node/91" href="http://libraryfind.org/node/91">http://libraryfind.org/node/91</a> for information on what that entails.&nbsp; LibraryFind 0.9 is on track for the first of the year.</p>
<p>&#8211;TR</p>
]]></content:encoded>
			<wfw:commentRss>http://people.oregonstate.edu/~reeset/blog/archives/592/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LibraryFind 0.8.5.8 next week</title>
		<link>http://people.oregonstate.edu/~reeset/blog/archives/589</link>
		<comments>http://people.oregonstate.edu/~reeset/blog/archives/589#comments</comments>
		<pubDate>Mon, 08 Dec 2008 16:11:04 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[LibraryFind]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://oregonstate.edu/~reeset/blog/archives/589</guid>
		<description><![CDATA[As I&#8217;ve been working on 0.9, I&#8217;ve been trying to migrate few odds and ends into the current 0.8 branch so that I can move them into production faster on our end.&#160; To that end, I&#8217;ll be posting an updated to LF by the beginning of next week.&#160; These updates will include:

Update to the Harvester [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve been working on 0.9, I&#8217;ve been trying to migrate few odds and ends into the current 0.8 branch so that I can move them into production faster on our end.&nbsp; To that end, I&#8217;ll be posting an updated to LF by the beginning of next week.&nbsp; These updates will include:</p>
<ol>
<li>Update to the Harvester (this will make it a bit more fault tolerant) as well as allowing harvesting of sets (currently) and root level oai providers (not provided currently).&nbsp; This change required significant changes to the search component as well that deals with the harvested materials.</li>
<li>Auto-detection of namespaces (for oai and sru &#8212; needed for libxml)</li>
<li>Removed rexml dependencies for opensearch component</li>
<li>Frozen gems for oai, sru and opensearch into vendor directories (and have added that to the environment.rb file)</li>
<li>Prep code for solr/ferret decision.&nbsp; I&#8217;ll be adding support to use either ferret or solr as your backend indexer for harvesting for 0.9, but some changes are being made to make this easier.&nbsp; Ferret provides an integrated rails solutions, while solr would provide a hosted index option.</li>
<li>In addition to this, some changes to the libxml module have deprecated a call being used in the oai gem (maybe the sru gem).&nbsp; I&#8217;ll take a look at both this week and update appropriately [as well as keep backworks compatibility if possible]</li>
</ol>
<p>Something else, we are starting to work with mod_rails.&nbsp; This allows apache to manage the rails environment &#8212; eliminating the need to run rails through packs of mongrels (or other specialized serving mechanism).&nbsp; I&#8217;ll write up something on our experiences for others that might be interested in this approach.</p>
<p>&#8211;TR</p>
]]></content:encoded>
			<wfw:commentRss>http://people.oregonstate.edu/~reeset/blog/archives/589/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
