<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>config/sphinx.yml</filename>
    </added>
    <added>
      <filename>public/javascripts/jquery.js</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,3 +1,5 @@
+config/*.sphinx.conf
+db/sphinx/
 .idea/
 tmp/
 log/</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -10,6 +10,12 @@ require 'rake/rdoctask'
 require 'tasks/rails'
 
 begin
+  require 'thinking_sphinx/tasks'
+rescue LoadError
+  STDERR.puts &quot;Run `rake gems:install` to install thinking_sphinx&quot;
+end
+
+begin
   require 'delayed/tasks'
 rescue LoadError
   STDERR.puts &quot;Run `rake gems:install` to install delayed_job&quot;</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -8,9 +8,13 @@ class Artifact &lt; ActiveRecord::Base
   validates_associated :repository
   validates_uniqueness_of :artifact_id, :scope =&gt; [:group_id, :version, :repository_id]
 
-  def self.search(query, options = {})
-    Artifact.artifact_id_or_group_id_or_description_like(query).paginate(options)
-  end
+  define_index do
+    indexes name
+    indexes artifact_id
+    indexes group_id
+    indexes description
+    indexes version, :sortable =&gt; true
+  end  
 
   def to_dep_snippet
     XML_TEMPLATE % [self.group_id, self.artifact_id, self.version]</diff>
      <filename>app/models/artifact.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,12 +17,13 @@ Rails::Initializer.run do |config|
   # Specify gems that this application depends on and have them installed with rake gems:install
   config.gem 'inherited_resources', :version =&gt; '0.9.2'
   config.gem 'delayed_job', :version =&gt; '1.8.4'
-  config.gem 'nokogiri', :version =&gt; '1.3.3'
-  config.gem 'rufus-scheduler', :lib =&gt; 'rufus/scheduler', :version =&gt; '2.0.1'
+  config.gem 'nokogiri', :version =&gt; '1.4.0'
+  config.gem 'rufus-scheduler', :lib =&gt; 'rufus/scheduler', :version =&gt; '2.0.2'
   config.gem 'factory_girl', :version =&gt; '1.2.3'
   config.gem 'will_paginate', :version =&gt; '2.3.11'
   config.gem 'searchlogic', :version =&gt; '2.3.5'
   config.gem 'faker', :version =&gt; '0.3.1'
+  config.gem 'thinking-sphinx', :lib =&gt; 'thinking_sphinx', :version =&gt; '1.2.12'
 
   # Only load the plugins named here, in the order given (default is alphabetical).
   # :all can be used as a placeholder for all plugins not explicitly named</diff>
      <filename>config/environment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,11 +12,11 @@ Scenario: Search by name
   And I fill in &quot;spring&quot; for &quot;MVNSearch &gt;&quot;
   And I press &quot;Search&quot;
   And I wait for the AJAX call to finish
-  Then I should see &quot;Total result(s) 0&quot;
+  Then I should see &quot;Total result(s) 2&quot;
   And I should see the following rows in the search results:
-      | artifact_id | group_id | version |
-      | spring-core | org.springframework | 2.5.6 |
-      | spring-core | org.springframework | 2.5.3 |
+      | group_id | artifact_id | version |
+      | org.springframework | spring-core | 2.5.6 |
+      | org.springframework | spring-core | 2.5.3 |
 
 Scenario: Search by name and version
   Given there is 1 repository
@@ -30,5 +30,5 @@ Scenario: Search by name and version
   And I wait for the AJAX call to finish
   Then I should see &quot;Total result(s) 1&quot;
   And I should see the following rows in the search results:
-      | artifact_id | group_id | version |
-      | spring-core | org.springframework | 2.5.6 |      
\ No newline at end of file
+      | group_id | artifact_id | version |
+      | org.springframework | spring-core | 2.5.6 |            
\ No newline at end of file</diff>
      <filename>features/search_artifacts.feature</filename>
    </modified>
    <modified>
      <diff>@@ -1,23 +1,5 @@
-require 'culerity'
-
-Before do
-  $rails_server ||= Culerity::run_rails
-  sleep 5
-  $server ||= Culerity::run_server
-  $browser = Culerity::RemoteBrowserProxy.new $server, {:browser =&gt; :firefox, :resynchronize =&gt; true, :javascript_exceptions =&gt; true, :log_level =&gt; :all}
-  @host = 'http://localhost:3001'
-end
-
-at_exit do
-  $browser.exit if $browser
-  $server.exit_server if $server
-  Process.kill(6, $rails_server.pid.to_i) if $rails_server
-end
-
 When /I press &quot;(.*)&quot;/ do |button|
-  button = [$browser.button(:text, button), $browser.button(:id, button)].find(&amp;:exist?)
-  button.click
-  When 'I wait for the AJAX call to finish'
+  $browser.button(:text, /#{button}/).click
 end
 
 When /I follow &quot;(.*)&quot; link/ do |link|
@@ -54,9 +36,9 @@ When /I wait for the AJAX call to finish/ do
   $browser.wait
 end
 
-Then /I should see &quot;(.*)&quot;/ do |text|
+Then /I should see &quot;(.*)&quot;/ do |text|  
   # if we simply check for the browser.html content we don't find content that has been added dynamically, e.g. after an ajax call
-  div = $browser.div(:text, /#{text}/)
+  div = $browser.div(:text, /#{Regexp.escape(text)}/)
   begin
     div.html
   rescue</diff>
      <filename>features/step_definitions/common_celerity_steps.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,17 +1,20 @@
 Given /^there is an artifact with\:$/ do | artifact_info |
+  ThinkingSphinx::Configuration.instance.controller.stop
   Artifact.transaction do
+    Artifact.destroy_all
     artifact_info.hashes.each do |info|
-      Artifact.destroy_all
       a = Artifact.new(info)
       a.repository = Repository.first
       a.save
     end
   end
-
+  ThinkingSphinx::Configuration.instance.controller.index
+  ThinkingSphinx::Configuration.instance.controller.start
 end
 
 Then /^I should see the following rows in the search results\:$/ do | results |
-  results[1..results.size].each do |row|
+  raw_data = results.raw
+  raw_data[1..raw_data.size].each do |row|
     Then &quot;I should see \&quot;#{row.join(' &gt; ')}\&quot;&quot;
   end
 end
\ No newline at end of file</diff>
      <filename>features/step_definitions/search_steps.rb</filename>
    </modified>
    <modified>
      <diff>@@ -36,3 +36,31 @@ require 'cucumber'
 # Comment out the next line if you don't want Cucumber Unicode support
 require 'cucumber/formatter/unicode'
 require 'cucumber/rails/rspec'
+
+ThinkingSphinx::Configuration.instance.build
+FileUtils.mkdir_p ThinkingSphinx::Configuration.instance.searchd_file_path
+
+if RUBY_PLATFORM =~ /java/
+  require &quot;celerity&quot;
+else
+  require &quot;culerity&quot;
+end
+
+Before do
+  if RUBY_PLATFORM =~ /java/
+    $browser = Celerity::Browser.new :resynchronize =&gt; true
+  else
+    sleep 5
+    $rails_server ||= Culerity::run_rails
+    $server ||= Culerity::run_server
+    $browser = Culerity::RemoteBrowserProxy.new $server, :resynchronize =&gt; true
+  end
+  @host = 'http://localhost:3001'
+end
+
+at_exit do
+  ThinkingSphinx::Configuration.instance.controller.stop
+  $browser.exit if $browser
+  $server.exit_server if $server
+  Process.kill(6, $rails_server.pid.to_i) if $rails_server
+end
\ No newline at end of file</diff>
      <filename>features/support/env.rb</filename>
    </modified>
    <modified>
      <diff>@@ -127,6 +127,7 @@ div.search-results p {
 
 div.search-results h2 {
     margin-bottom: 0;
+    font-size:35px;
 }
 
 div.search-results div.snippet {</diff>
      <filename>public/stylesheets/application.css</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,8 @@ describe SearchesController do
   end
 
   it &quot;should render the search results partial on POST to the create action&quot; do
-    Factory(:artifact)
+    a = Factory(:artifact)
+    Artifact.stubs(:search).returns([a])
     post 'create', :search =&gt; 'spring', :page =&gt; 1
     assigns[:search_results].should_not be_nil
     response.should be_success</diff>
      <filename>spec/controllers/searches_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -61,12 +61,5 @@ describe Artifact do
     @artifact.to_dep_snippet.should_not be_nil
     @artifact.to_dep_snippet.should be_an(String)
     @artifact.to_dep_snippet.should == &quot;&lt;dependency&gt;\n\s\s\s&lt;groupId&gt;%s&lt;/groupId&gt;\n\s\s\s&lt;artifactId&gt;%s&lt;/artifactId&gt;\n\s\s\s&lt;version&gt;%s&lt;/version&gt;\n&lt;/dependency&gt;&quot; % [@artifact.group_id, @artifact.artifact_id, @artifact.version]
-  end
-
-  it &quot;should return N results when searching an artifact&quot; do
-    @artifact.save
-    artifact_search = Artifact.search('spring', {:page =&gt; 1})
-    artifact_search.should_not be_nil
-    artifact_search.size.should == 1
-  end
+  end  
 end</diff>
      <filename>spec/models/artifact_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>aee20ba1c6adaf1e1232131055bd9d7536774c51</id>
    </parent>
  </parents>
  <author>
    <name>Julio Arias</name>
    <email>julio.arias@fresisoft.com</email>
  </author>
  <url>http://github.com/jarias/mvnsearch/commit/3b52381faa8cffc49bb86d05a719d5cef4c26db8</url>
  <id>3b52381faa8cffc49bb86d05a719d5cef4c26db8</id>
  <committed-date>2009-10-31T14:45:58-07:00</committed-date>
  <authored-date>2009-10-31T14:45:58-07:00</authored-date>
  <message>Added thinking sphinx for full text searching ( This means no Heroku :( )
Fixed cucumber step &quot;I should see ...&quot; cause it wasn't scaping regexp characters</message>
  <tree>cf671a4baeef651a1fd479d98f7543db758b71f1</tree>
  <committer>
    <name>Julio Arias</name>
    <email>julio.arias@fresisoft.com</email>
  </committer>
</commit>
