smart_search 0.0.4 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/config/database.yml +6 -0
 - data/config/routes.rb +3 -2
 - data/lib/smart_search/smart_search_engine.rb +10 -0
 - data/lib/smart_search.rb +156 -78
 - data/lib/smart_search_history.rb +7 -0
 - data/lib/smart_search_ignore_word.rb +30 -0
 - data/lib/smart_search_tag.rb +16 -0
 - data/lib/smart_similarity.rb +133 -0
 - data/lib/tasks/smart_search.rake +58 -0
 - data/lib/tasks/testing.rake +27 -0
 - data/test/test_document_multi_line.txt +6 -0
 - data/test/test_document_one_line.txt +1 -0
 - data/test/test_helper.rb +77 -0
 - data/test/unit/01_smart_search_test.rb +81 -0
 - data/test/unit/02_smart_search_similarity_test.rb +32 -0
 - data/test/unit/03_smart_search_boost_test.rb +60 -0
 - metadata +92 -35
 - data/app/controllers/search_controller.rb +0 -46
 - data/app/views/search/_results_small.html.erb +0 -25
 - data/app/views/search/all.html.erb +0 -15
 - data/app/views/search/results/_ansprechpartner.html.erb +0 -8
 - data/app/views/search/results/_calendar_entry.html.erb +0 -29
 - data/app/views/search/results/_company.html.erb +0 -25
 - data/app/views/search/results/_concept.html.erb +0 -26
 - data/app/views/search/results/_customer.html.erb +0 -51
 - data/app/views/search/results/_family.html.erb +0 -1
 - data/app/views/search/results/_firma.html.erb +0 -1
 - data/app/views/search/results/_product.html.erb +0 -37
 - data/app/views/search/results/_smart_document.html.erb +0 -8
 - data/app/views/search/results/_topic.html.erb +0 -8
 - data/app/views/search/results/_umsatz.html.erb +0 -1
 - data/app/views/search/results/_umsatz_refactor.html.erb +0 -4
 - data/app/views/search/results/_umsatz_storno.html.erb +0 -1
 - data/app/views/search/results/_user.html.erb +0 -3
 - data/app/views/search/results/_wiki_page.html.erb +0 -9
 - data/lib/add_search_tags.rb +0 -8
 
    
        data/test/test_helper.rb
    ADDED
    
    | 
         @@ -0,0 +1,77 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding : utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'bundler'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'active_support'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'active_record'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'active_model'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            require "smart_search"
         
     | 
| 
      
 10 
     | 
    
         
            +
            require "smart_search/smart_search_engine"
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ActiveRecord::Base.establish_connection(:adapter => "mysql2", :database => "smart_search_test")
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              ActiveRecord::Schema.define(:version => 1) do
         
     | 
| 
      
 16 
     | 
    
         
            +
                create_table :users do |t|
         
     | 
| 
      
 17 
     | 
    
         
            +
                  t.string  :first_name
         
     | 
| 
      
 18 
     | 
    
         
            +
                  t.string  :last_name
         
     | 
| 
      
 19 
     | 
    
         
            +
                  t.integer :office_id
         
     | 
| 
      
 20 
     | 
    
         
            +
                  t.date    :birthday
         
     | 
| 
      
 21 
     | 
    
         
            +
                  t.timestamps
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
                
         
     | 
| 
      
 24 
     | 
    
         
            +
                create_table :customers do |t|
         
     | 
| 
      
 25 
     | 
    
         
            +
                  t.string  :first_name
         
     | 
| 
      
 26 
     | 
    
         
            +
                  t.string  :last_name
         
     | 
| 
      
 27 
     | 
    
         
            +
                  t.integer :user_id
         
     | 
| 
      
 28 
     | 
    
         
            +
                  t.date    :birthday
         
     | 
| 
      
 29 
     | 
    
         
            +
                  t.timestamps
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
                
         
     | 
| 
      
 32 
     | 
    
         
            +
                create_table  :offices do |t|  
         
     | 
| 
      
 33 
     | 
    
         
            +
                  t.string  :name
         
     | 
| 
      
 34 
     | 
    
         
            +
                  t.timestamps
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
                
         
     | 
| 
      
 37 
     | 
    
         
            +
                  
         
     | 
| 
      
 38 
     | 
    
         
            +
              end  
         
     | 
| 
      
 39 
     | 
    
         
            +
            # 
         
     | 
| 
      
 40 
     | 
    
         
            +
            # def drop_db
         
     | 
| 
      
 41 
     | 
    
         
            +
            #   ActiveRecord::Base.connection.tables.each do |table|
         
     | 
| 
      
 42 
     | 
    
         
            +
            #     ActiveRecord::Base.connection.drop_table(table)
         
     | 
| 
      
 43 
     | 
    
         
            +
            #   end
         
     | 
| 
      
 44 
     | 
    
         
            +
            # end
         
     | 
| 
      
 45 
     | 
    
         
            +
            # 
         
     | 
| 
      
 46 
     | 
    
         
            +
            class User < ActiveRecord::Base
         
     | 
| 
      
 47 
     | 
    
         
            +
              
         
     | 
| 
      
 48 
     | 
    
         
            +
              belongs_to :office, :class_name => "Office", :foreign_key => "office_id"
         
     | 
| 
      
 49 
     | 
    
         
            +
              
         
     | 
| 
      
 50 
     | 
    
         
            +
              smart_search :on => [:full_name, 'office.name']
         
     | 
| 
      
 51 
     | 
    
         
            +
              
         
     | 
| 
      
 52 
     | 
    
         
            +
              def full_name
         
     | 
| 
      
 53 
     | 
    
         
            +
                "#{self.first_name} #{self.last_name}"
         
     | 
| 
      
 54 
     | 
    
         
            +
              end  
         
     | 
| 
      
 55 
     | 
    
         
            +
            end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            class Customer < ActiveRecord::Base
         
     | 
| 
      
 58 
     | 
    
         
            +
              smart_search :on => [:first_name, :last_name, 'user.full_name', 'user.office.name', :birthday]
         
     | 
| 
      
 59 
     | 
    
         
            +
              
         
     | 
| 
      
 60 
     | 
    
         
            +
              def user
         
     | 
| 
      
 61 
     | 
    
         
            +
                User.find(self.user_id)
         
     | 
| 
      
 62 
     | 
    
         
            +
              end  
         
     | 
| 
      
 63 
     | 
    
         
            +
              
         
     | 
| 
      
 64 
     | 
    
         
            +
            end        
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            # This one has not included smart-search yet
         
     | 
| 
      
 67 
     | 
    
         
            +
            class Office < ActiveRecord::Base
         
     | 
| 
      
 68 
     | 
    
         
            +
              smart_search :on => [:name, :user_names]
         
     | 
| 
      
 69 
     | 
    
         
            +
              
         
     | 
| 
      
 70 
     | 
    
         
            +
              def user_names
         
     | 
| 
      
 71 
     | 
    
         
            +
                self.users.map {|u| u.full_name }.join(" ")
         
     | 
| 
      
 72 
     | 
    
         
            +
              end
         
     | 
| 
      
 73 
     | 
    
         
            +
              
         
     | 
| 
      
 74 
     | 
    
         
            +
              def users
         
     | 
| 
      
 75 
     | 
    
         
            +
                User.find_all_by_office_id(self.id)
         
     | 
| 
      
 76 
     | 
    
         
            +
              end    
         
     | 
| 
      
 77 
     | 
    
         
            +
            end  
         
     | 
| 
         @@ -0,0 +1,81 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding : utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "test_helper"
         
     | 
| 
      
 3 
     | 
    
         
            +
            class SmartSearchTest < Test::Unit::TestCase
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              def test_simple_search_tags_should_be_saved
         
     | 
| 
      
 6 
     | 
    
         
            +
                office_name = "Office1"
         
     | 
| 
      
 7 
     | 
    
         
            +
                office = Office.create(:name => office_name)
         
     | 
| 
      
 8 
     | 
    
         
            +
                
         
     | 
| 
      
 9 
     | 
    
         
            +
                Office.enable_similarity = false
         
     | 
| 
      
 10 
     | 
    
         
            +
                
         
     | 
| 
      
 11 
     | 
    
         
            +
                assert_equal office, Office.find_by_tags(office_name).first
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
              
         
     | 
| 
      
 14 
     | 
    
         
            +
              def test_search_tags_should_cross_reference
         
     | 
| 
      
 15 
     | 
    
         
            +
                
         
     | 
| 
      
 16 
     | 
    
         
            +
                office_name = "Office2"
         
     | 
| 
      
 17 
     | 
    
         
            +
                
         
     | 
| 
      
 18 
     | 
    
         
            +
                office  = Office.create(:name => office_name)
         
     | 
| 
      
 19 
     | 
    
         
            +
                user    = User.create(:first_name => "My", :last_name => "User", :office_id => office.id)
         
     | 
| 
      
 20 
     | 
    
         
            +
                
         
     | 
| 
      
 21 
     | 
    
         
            +
                assert_equal user, User.find_by_tags("My User").first
         
     | 
| 
      
 22 
     | 
    
         
            +
                assert_equal user, User.find_by_tags(office_name).first
         
     | 
| 
      
 23 
     | 
    
         
            +
                
         
     | 
| 
      
 24 
     | 
    
         
            +
                # test that all is linked correctly
         
     | 
| 
      
 25 
     | 
    
         
            +
                assert_equal user.office, office
         
     | 
| 
      
 26 
     | 
    
         
            +
                assert_equal user.office_id, office.id
         
     | 
| 
      
 27 
     | 
    
         
            +
                assert_equal 1, office.users.size
         
     | 
| 
      
 28 
     | 
    
         
            +
                
         
     | 
| 
      
 29 
     | 
    
         
            +
                # test for loading user names to office
         
     | 
| 
      
 30 
     | 
    
         
            +
                office.save
         
     | 
| 
      
 31 
     | 
    
         
            +
                
         
     | 
| 
      
 32 
     | 
    
         
            +
                assert_equal office, Office.find_by_tags("My User").first
         
     | 
| 
      
 33 
     | 
    
         
            +
                
         
     | 
| 
      
 34 
     | 
    
         
            +
              end     
         
     | 
| 
      
 35 
     | 
    
         
            +
              
         
     | 
| 
      
 36 
     | 
    
         
            +
              def test_should_use_default_conditions
         
     | 
| 
      
 37 
     | 
    
         
            +
                office_id_ok  = 4
         
     | 
| 
      
 38 
     | 
    
         
            +
                office_id_nok = 5
         
     | 
| 
      
 39 
     | 
    
         
            +
                
         
     | 
| 
      
 40 
     | 
    
         
            +
                User.smart_search :on => [:full_name], :conditions => "office_id <> #{office_id_nok}", :force => true
         
     | 
| 
      
 41 
     | 
    
         
            +
                User.enable_similarity = false
         
     | 
| 
      
 42 
     | 
    
         
            +
                
         
     | 
| 
      
 43 
     | 
    
         
            +
                user    = User.create(:first_name => "Unknown", :last_name => "User", :office_id => office_id_nok)
         
     | 
| 
      
 44 
     | 
    
         
            +
                user    = User.create(:first_name => "Public", :last_name => "User", :office_id => office_id_ok)
         
     | 
| 
      
 45 
     | 
    
         
            +
                
         
     | 
| 
      
 46 
     | 
    
         
            +
                assert_equal User.find_by_tags("unknown").size, 0
         
     | 
| 
      
 47 
     | 
    
         
            +
                assert_equal User.find_by_tags("public").size, 1
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
              
         
     | 
| 
      
 50 
     | 
    
         
            +
              def test_should_use_default_order_and_order_should_be_overwriteable
         
     | 
| 
      
 51 
     | 
    
         
            +
                User.smart_search :on => [:full_name], :order => :first_name, :force => true
         
     | 
| 
      
 52 
     | 
    
         
            +
                User.enable_similarity = false
         
     | 
| 
      
 53 
     | 
    
         
            +
                
         
     | 
| 
      
 54 
     | 
    
         
            +
                user_c    = User.create(:first_name => "C", :last_name => "Test1")
         
     | 
| 
      
 55 
     | 
    
         
            +
                user_a    = User.create(:first_name => "A", :last_name => "Test3")
         
     | 
| 
      
 56 
     | 
    
         
            +
                user_b    = User.create(:first_name => "B", :last_name => "Test2")
         
     | 
| 
      
 57 
     | 
    
         
            +
                
         
     | 
| 
      
 58 
     | 
    
         
            +
                
         
     | 
| 
      
 59 
     | 
    
         
            +
                assert_equal  user_a, User.find_by_tags("test").first
         
     | 
| 
      
 60 
     | 
    
         
            +
                assert_equal  user_c, User.find_by_tags("test").last
         
     | 
| 
      
 61 
     | 
    
         
            +
                
         
     | 
| 
      
 62 
     | 
    
         
            +
                assert_equal  user_c, User.find_by_tags("test", :order => :last_name).first
         
     | 
| 
      
 63 
     | 
    
         
            +
                assert_equal  user_a, User.find_by_tags("test", :order => :last_name).last
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
              
         
     | 
| 
      
 66 
     | 
    
         
            +
              def test_search_tags_should_work_with_array_of_strings   
         
     | 
| 
      
 67 
     | 
    
         
            +
                User.smart_search :on => %w(first_name last_name office.name), :force => true
         
     | 
| 
      
 68 
     | 
    
         
            +
                o = Office.create(:name => "Neandertal")
         
     | 
| 
      
 69 
     | 
    
         
            +
                u = User.create(:first_name => "Homo", :last_name => "Sapiens", :office_id => o.id)
         
     | 
| 
      
 70 
     | 
    
         
            +
                
         
     | 
| 
      
 71 
     | 
    
         
            +
              end  
         
     | 
| 
      
 72 
     | 
    
         
            +
              
         
     | 
| 
      
 73 
     | 
    
         
            +
              
         
     | 
| 
      
 74 
     | 
    
         
            +
              def test_should_create_search_history
         
     | 
| 
      
 75 
     | 
    
         
            +
                User.find_by_tags("XXXYYY")
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                assert_not_equal 0, SmartSearchHistory.where(:query => "XXXYYY").size
         
     | 
| 
      
 78 
     | 
    
         
            +
              end  
         
     | 
| 
      
 79 
     | 
    
         
            +
              
         
     | 
| 
      
 80 
     | 
    
         
            +
              
         
     | 
| 
      
 81 
     | 
    
         
            +
            end  
         
     | 
| 
         @@ -0,0 +1,32 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding : utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "test_helper"
         
     | 
| 
      
 3 
     | 
    
         
            +
            class SmartSearchSimilartyTest < Test::Unit::TestCase
         
     | 
| 
      
 4 
     | 
    
         
            +
              
         
     | 
| 
      
 5 
     | 
    
         
            +
              def test_similarity_should_load_from_file
         
     | 
| 
      
 6 
     | 
    
         
            +
                testfile_1 = File.expand_path("../../test_document_one_line.txt", __FILE__)
         
     | 
| 
      
 7 
     | 
    
         
            +
                testfile_2 = File.expand_path("../../test_document_multi_line.txt", __FILE__)
         
     | 
| 
      
 8 
     | 
    
         
            +
                SmartSimilarity.connection.execute "Truncate table #{SmartSimilarity.table_name}"
         
     | 
| 
      
 9 
     | 
    
         
            +
                
         
     | 
| 
      
 10 
     | 
    
         
            +
                assert_equal 0, SmartSimilarity.count
         
     | 
| 
      
 11 
     | 
    
         
            +
                SmartSimilarity.load_file(testfile_2)
         
     | 
| 
      
 12 
     | 
    
         
            +
                new_count = SmartSimilarity.count
         
     | 
| 
      
 13 
     | 
    
         
            +
                assert_not_equal 0, new_count
         
     | 
| 
      
 14 
     | 
    
         
            +
                
         
     | 
| 
      
 15 
     | 
    
         
            +
                SmartSimilarity.load_file(testfile_1)
         
     | 
| 
      
 16 
     | 
    
         
            +
                assert_not_equal new_count, SmartSimilarity.count
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
              
         
     | 
| 
      
 19 
     | 
    
         
            +
              def test_similarity_should_load_from_url
         
     | 
| 
      
 20 
     | 
    
         
            +
                count = SmartSimilarity.count
         
     | 
| 
      
 21 
     | 
    
         
            +
                SmartSimilarity.load_url("https://github.com/florianeck/smart_search")
         
     | 
| 
      
 22 
     | 
    
         
            +
                assert_not_equal count, SmartSimilarity.count
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
              
         
     | 
| 
      
 25 
     | 
    
         
            +
              def test_similarity_should_load_from_history
         
     | 
| 
      
 26 
     | 
    
         
            +
                count = SmartSimilarity.count
         
     | 
| 
      
 27 
     | 
    
         
            +
                User.find_by_tags("this is history now")
         
     | 
| 
      
 28 
     | 
    
         
            +
                SmartSimilarity.load_from_query_history
         
     | 
| 
      
 29 
     | 
    
         
            +
                assert_not_equal count, SmartSimilarity.count
         
     | 
| 
      
 30 
     | 
    
         
            +
              end      
         
     | 
| 
      
 31 
     | 
    
         
            +
              
         
     | 
| 
      
 32 
     | 
    
         
            +
            end  
         
     | 
| 
         @@ -0,0 +1,60 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding : utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "test_helper"
         
     | 
| 
      
 3 
     | 
    
         
            +
            class SmartSearchBoostTest < Test::Unit::TestCase
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              def test_boost_search_index_cols_should_be_created
         
     | 
| 
      
 6 
     | 
    
         
            +
                SmartSearchTag.connection.execute("TRUNCATE #{SmartSearchTag.table_name}")
         
     | 
| 
      
 7 
     | 
    
         
            +
                Customer.smart_search :on => [
         
     | 
| 
      
 8 
     | 
    
         
            +
                  {:field_name => :first_name, :boost => 1},
         
     | 
| 
      
 9 
     | 
    
         
            +
                  {:field_name => :last_name, :boost => 2},
         
     | 
| 
      
 10 
     | 
    
         
            +
                  {:field_name => "user.full_name", :boost => 0.5},
         
     | 
| 
      
 11 
     | 
    
         
            +
                  ], :force => true
         
     | 
| 
      
 12 
     | 
    
         
            +
                
         
     | 
| 
      
 13 
     | 
    
         
            +
                user = User.create(:first_name => "Pi", :last_name => "Pa")
         
     | 
| 
      
 14 
     | 
    
         
            +
                
         
     | 
| 
      
 15 
     | 
    
         
            +
                Customer.create(:first_name => "Lorem", :last_name => "Ipsum", :user_id => user.id)
         
     | 
| 
      
 16 
     | 
    
         
            +
                
         
     | 
| 
      
 17 
     | 
    
         
            +
                assert_equal 1, SmartSearchTag.where(:field_name => "first_name", :boost => 1).count
         
     | 
| 
      
 18 
     | 
    
         
            +
                assert_equal 1, SmartSearchTag.where(:field_name => "last_name", :boost => 2).count
         
     | 
| 
      
 19 
     | 
    
         
            +
                assert_equal 1, SmartSearchTag.where(:field_name => "user.full_name", :boost => 0.5).count
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
              
         
     | 
| 
      
 22 
     | 
    
         
            +
              def test_boost_search__results_should_order_by_score
         
     | 
| 
      
 23 
     | 
    
         
            +
                Customer.smart_search :on => [
         
     | 
| 
      
 24 
     | 
    
         
            +
                  {:field_name => :first_name, :boost => 1},
         
     | 
| 
      
 25 
     | 
    
         
            +
                  {:field_name => :last_name, :boost => 2},
         
     | 
| 
      
 26 
     | 
    
         
            +
                  {:field_name => "user.full_name", :boost => 0.5},
         
     | 
| 
      
 27 
     | 
    
         
            +
                  ], :force => true
         
     | 
| 
      
 28 
     | 
    
         
            +
                
         
     | 
| 
      
 29 
     | 
    
         
            +
                user = User.create(:first_name => "Rudi", :last_name => "Piff")
         
     | 
| 
      
 30 
     | 
    
         
            +
                
         
     | 
| 
      
 31 
     | 
    
         
            +
                c1 = Customer.create(:first_name => "Rudi", :last_name => "Rolle", :user_id => user.id)
         
     | 
| 
      
 32 
     | 
    
         
            +
                c2 = Customer.create(:first_name => "Rolle", :last_name => "Rudi", :user_id => user.id)
         
     | 
| 
      
 33 
     | 
    
         
            +
                c3 = Customer.create(:first_name => "Jackie", :last_name => "Brown", :user_id => user.id)
         
     | 
| 
      
 34 
     | 
    
         
            +
                
         
     | 
| 
      
 35 
     | 
    
         
            +
                results = Customer.find_by_tags("Rudi")
         
     | 
| 
      
 36 
     | 
    
         
            +
                
         
     | 
| 
      
 37 
     | 
    
         
            +
                assert_equal c1, results[1]
         
     | 
| 
      
 38 
     | 
    
         
            +
                assert_equal c2, results[0]
         
     | 
| 
      
 39 
     | 
    
         
            +
                assert_equal c3, results[2]
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
              
         
     | 
| 
      
 42 
     | 
    
         
            +
              
         
     | 
| 
      
 43 
     | 
    
         
            +
              def test_same_boost_search_index_cols_should_be_grouped
         
     | 
| 
      
 44 
     | 
    
         
            +
                
         
     | 
| 
      
 45 
     | 
    
         
            +
                Customer.smart_search :on => [
         
     | 
| 
      
 46 
     | 
    
         
            +
                  {:field_name => :first_name, :boost => 2},
         
     | 
| 
      
 47 
     | 
    
         
            +
                  {:field_name => :last_name, :boost => 2},
         
     | 
| 
      
 48 
     | 
    
         
            +
                  {:field_name => "user.full_name", :boost => 0.5},
         
     | 
| 
      
 49 
     | 
    
         
            +
                  ], :force => true
         
     | 
| 
      
 50 
     | 
    
         
            +
                
         
     | 
| 
      
 51 
     | 
    
         
            +
                user = User.create(:first_name => "Pipi", :last_name => "Papa")
         
     | 
| 
      
 52 
     | 
    
         
            +
                
         
     | 
| 
      
 53 
     | 
    
         
            +
                customer = Customer.create(:first_name => "Lorem", :last_name => "Ipsum", :user_id => user.id)
         
     | 
| 
      
 54 
     | 
    
         
            +
                
         
     | 
| 
      
 55 
     | 
    
         
            +
                assert_equal 2, SmartSearchTag.where(:table_name => Customer.table_name, :entry_id => customer.id).count
         
     | 
| 
      
 56 
     | 
    
         
            +
              end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
         
     | 
| 
      
 58 
     | 
    
         
            +
              
         
     | 
| 
      
 59 
     | 
    
         
            +
              
         
     | 
| 
      
 60 
     | 
    
         
            +
            end  
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,66 +1,123 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: smart_search
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
       5 
     | 
    
         
            -
              prerelease: 
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.7
         
     | 
| 
       6 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       8 
7 
     | 
    
         
             
            - Florian Eck
         
     | 
| 
       9 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date:  
     | 
| 
       13 
     | 
    
         
            -
            dependencies: 
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
               
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2014-05-15 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: rails
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: 3.2.9
         
     | 
| 
      
 20 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 22 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 23 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 25 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 26 
     | 
    
         
            +
                    version: 3.2.9
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: amatch
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 41 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 42 
     | 
    
         
            +
              name: friendly_extensions
         
     | 
| 
      
 43 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 44 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 45 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 46 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 47 
     | 
    
         
            +
                    version: 0.0.61
         
     | 
| 
      
 48 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 49 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 50 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 51 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 52 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 53 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 54 
     | 
    
         
            +
                    version: 0.0.61
         
     | 
| 
      
 55 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 56 
     | 
    
         
            +
              name: mysql2
         
     | 
| 
      
 57 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 62 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 63 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 64 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 65 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 66 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 67 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 68 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 69 
     | 
    
         
            +
            description: SmartSearch adds full-text search functions to ActiveRecord running with
         
     | 
| 
      
 70 
     | 
    
         
            +
              MySQL, including search for similiar words. Its fast, simple, and works with almost
         
     | 
| 
      
 71 
     | 
    
         
            +
              zero-config!
         
     | 
| 
       16 
72 
     | 
    
         
             
            email: it-support@friends-systems.de
         
     | 
| 
       17 
73 
     | 
    
         
             
            executables: []
         
     | 
| 
       18 
74 
     | 
    
         
             
            extensions: []
         
     | 
| 
       19 
75 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       20 
76 
     | 
    
         
             
            files:
         
     | 
| 
       21 
     | 
    
         
            -
            -  
     | 
| 
       22 
     | 
    
         
            -
            - lib/smart_search.rb
         
     | 
| 
       23 
     | 
    
         
            -
            - app/controllers/search_controller.rb
         
     | 
| 
       24 
     | 
    
         
            -
            - app/views/search/_results_small.html.erb
         
     | 
| 
       25 
     | 
    
         
            -
            - app/views/search/all.html.erb
         
     | 
| 
       26 
     | 
    
         
            -
            - app/views/search/results/_ansprechpartner.html.erb
         
     | 
| 
       27 
     | 
    
         
            -
            - app/views/search/results/_calendar_entry.html.erb
         
     | 
| 
       28 
     | 
    
         
            -
            - app/views/search/results/_company.html.erb
         
     | 
| 
       29 
     | 
    
         
            -
            - app/views/search/results/_concept.html.erb
         
     | 
| 
       30 
     | 
    
         
            -
            - app/views/search/results/_customer.html.erb
         
     | 
| 
       31 
     | 
    
         
            -
            - app/views/search/results/_family.html.erb
         
     | 
| 
       32 
     | 
    
         
            -
            - app/views/search/results/_firma.html.erb
         
     | 
| 
       33 
     | 
    
         
            -
            - app/views/search/results/_product.html.erb
         
     | 
| 
       34 
     | 
    
         
            -
            - app/views/search/results/_smart_document.html.erb
         
     | 
| 
       35 
     | 
    
         
            -
            - app/views/search/results/_topic.html.erb
         
     | 
| 
       36 
     | 
    
         
            -
            - app/views/search/results/_umsatz.html.erb
         
     | 
| 
       37 
     | 
    
         
            -
            - app/views/search/results/_umsatz_refactor.html.erb
         
     | 
| 
       38 
     | 
    
         
            -
            - app/views/search/results/_umsatz_storno.html.erb
         
     | 
| 
       39 
     | 
    
         
            -
            - app/views/search/results/_user.html.erb
         
     | 
| 
       40 
     | 
    
         
            -
            - app/views/search/results/_wiki_page.html.erb
         
     | 
| 
      
 77 
     | 
    
         
            +
            - config/database.yml
         
     | 
| 
       41 
78 
     | 
    
         
             
            - config/routes.rb
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
      
 79 
     | 
    
         
            +
            - lib/smart_search.rb
         
     | 
| 
      
 80 
     | 
    
         
            +
            - lib/smart_search/smart_search_engine.rb
         
     | 
| 
      
 81 
     | 
    
         
            +
            - lib/smart_search_history.rb
         
     | 
| 
      
 82 
     | 
    
         
            +
            - lib/smart_search_ignore_word.rb
         
     | 
| 
      
 83 
     | 
    
         
            +
            - lib/smart_search_tag.rb
         
     | 
| 
      
 84 
     | 
    
         
            +
            - lib/smart_similarity.rb
         
     | 
| 
      
 85 
     | 
    
         
            +
            - lib/tasks/smart_search.rake
         
     | 
| 
      
 86 
     | 
    
         
            +
            - lib/tasks/testing.rake
         
     | 
| 
      
 87 
     | 
    
         
            +
            - test/test_document_multi_line.txt
         
     | 
| 
      
 88 
     | 
    
         
            +
            - test/test_document_one_line.txt
         
     | 
| 
      
 89 
     | 
    
         
            +
            - test/test_helper.rb
         
     | 
| 
      
 90 
     | 
    
         
            +
            - test/unit/01_smart_search_test.rb
         
     | 
| 
      
 91 
     | 
    
         
            +
            - test/unit/02_smart_search_similarity_test.rb
         
     | 
| 
      
 92 
     | 
    
         
            +
            - test/unit/03_smart_search_boost_test.rb
         
     | 
| 
      
 93 
     | 
    
         
            +
            homepage: https://github.com/florianeck/smart_search
         
     | 
| 
       43 
94 
     | 
    
         
             
            licenses: []
         
     | 
| 
      
 95 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
       44 
96 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       45 
97 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       46 
98 
     | 
    
         
             
            require_paths:
         
     | 
| 
       47 
99 
     | 
    
         
             
            - lib
         
     | 
| 
       48 
100 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       49 
     | 
    
         
            -
              none: false
         
     | 
| 
       50 
101 
     | 
    
         
             
              requirements:
         
     | 
| 
       51 
     | 
    
         
            -
              - -  
     | 
| 
      
 102 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       52 
103 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       53 
104 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       54 
105 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       55 
     | 
    
         
            -
              none: false
         
     | 
| 
       56 
106 
     | 
    
         
             
              requirements:
         
     | 
| 
       57 
     | 
    
         
            -
              - -  
     | 
| 
      
 107 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       58 
108 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       59 
109 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       60 
110 
     | 
    
         
             
            requirements: []
         
     | 
| 
       61 
111 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       62 
     | 
    
         
            -
            rubygems_version:  
     | 
| 
      
 112 
     | 
    
         
            +
            rubygems_version: 2.2.1
         
     | 
| 
       63 
113 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       64 
     | 
    
         
            -
            specification_version:  
     | 
| 
       65 
     | 
    
         
            -
            summary: Simple, easy to use search 
     | 
| 
       66 
     | 
    
         
            -
            test_files: 
     | 
| 
      
 114 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 115 
     | 
    
         
            +
            summary: Simple, easy to use search MySQL based search for ActiveRecord
         
     | 
| 
      
 116 
     | 
    
         
            +
            test_files:
         
     | 
| 
      
 117 
     | 
    
         
            +
            - test/test_document_multi_line.txt
         
     | 
| 
      
 118 
     | 
    
         
            +
            - test/test_document_one_line.txt
         
     | 
| 
      
 119 
     | 
    
         
            +
            - test/test_helper.rb
         
     | 
| 
      
 120 
     | 
    
         
            +
            - test/unit/01_smart_search_test.rb
         
     | 
| 
      
 121 
     | 
    
         
            +
            - test/unit/02_smart_search_similarity_test.rb
         
     | 
| 
      
 122 
     | 
    
         
            +
            - test/unit/03_smart_search_boost_test.rb
         
     | 
| 
      
 123 
     | 
    
         
            +
            has_rdoc: 
         
     | 
| 
         @@ -1,46 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- encoding : utf-8 -*-
         
     | 
| 
       2 
     | 
    
         
            -
            class SearchController < ApplicationController
         
     | 
| 
       3 
     | 
    
         
            -
              
         
     | 
| 
       4 
     | 
    
         
            -
              def all
         
     | 
| 
       5 
     | 
    
         
            -
                
         
     | 
| 
       6 
     | 
    
         
            -
                if params[:search]
         
     | 
| 
       7 
     | 
    
         
            -
                  @query = params[:search][:query]
         
     | 
| 
       8 
     | 
    
         
            -
                else
         
     | 
| 
       9 
     | 
    
         
            -
                  @query = params[:query]  
         
     | 
| 
       10 
     | 
    
         
            -
                end  
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                unless @query.blank?
         
     | 
| 
       13 
     | 
    
         
            -
                  team = current_user.get_team_tree(:get_ids => true )
         
     | 
| 
       14 
     | 
    
         
            -
                  @results = []
         
     | 
| 
       15 
     | 
    
         
            -
                  SmartSearch::Config.get_search_models.each do |m|
         
     | 
| 
       16 
     | 
    
         
            -
                    if params[:only].nil? || params[:only] == m.to_s.split("::").last 
         
     | 
| 
       17 
     | 
    
         
            -
                      #if (admin? || backoffice? || controller? || backoffice_vertrieb?) || !m.column_names.include?("user_id") || SmartSearch::Config.get_public_models.include?(m)
         
     | 
| 
       18 
     | 
    
         
            -
                      
         
     | 
| 
       19 
     | 
    
         
            -
                      if SmartSearch::Config.get_public_models.include?(m)   
         
     | 
| 
       20 
     | 
    
         
            -
                        @results << m.find_by_tags(@query)
         
     | 
| 
       21 
     | 
    
         
            -
                      elsif m.column_names.include?("user_id")
         
     | 
| 
       22 
     | 
    
         
            -
                        @results << m.find_by_tags(@query, {:user_id => team})
         
     | 
| 
       23 
     | 
    
         
            -
                      elsif m.column_names.include?("account_id")     
         
     | 
| 
       24 
     | 
    
         
            -
                        @results << m.find_by_tags(@query, {:account_id => current_user.account_id})
         
     | 
| 
       25 
     | 
    
         
            -
                      else
         
     | 
| 
       26 
     | 
    
         
            -
                        
         
     | 
| 
       27 
     | 
    
         
            -
                      end  
         
     | 
| 
       28 
     | 
    
         
            -
                    end  
         
     | 
| 
       29 
     | 
    
         
            -
                  end  
         
     | 
| 
       30 
     | 
    
         
            -
                
         
     | 
| 
       31 
     | 
    
         
            -
                  @empty = @results.flatten.empty?
         
     | 
| 
       32 
     | 
    
         
            -
                
         
     | 
| 
       33 
     | 
    
         
            -
                  if request.xhr?
         
     | 
| 
       34 
     | 
    
         
            -
                    render :partial => "/search/results_small", :locals => {:results => @results, :no_limit => !params[:only].nil?}, :layout => params[:layout]
         
     | 
| 
       35 
     | 
    
         
            -
                  end
         
     | 
| 
       36 
     | 
    
         
            -
                else
         
     | 
| 
       37 
     | 
    
         
            -
                  render :text => "Bitte geben Sie einen Suchbegriff ein"    
         
     | 
| 
       38 
     | 
    
         
            -
                end  
         
     | 
| 
       39 
     | 
    
         
            -
                
         
     | 
| 
       40 
     | 
    
         
            -
              end  
         
     | 
| 
       41 
     | 
    
         
            -
              
         
     | 
| 
       42 
     | 
    
         
            -
            end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
            # (admin? || backoffice? || controller? || backoffice_vertrieb?) ||
         
     | 
| 
         @@ -1,25 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <div id="smartsearch-results-container-small">
         
     | 
| 
       2 
     | 
    
         
            -
              <div class="bold teaser">
         
     | 
| 
       3 
     | 
    
         
            -
                  <%= "keine " if @empty %>Suchergebnisse für 
         
     | 
| 
       4 
     | 
    
         
            -
                   <%= form_for :search, :url => {:controller => "search", :action => "all", :layout => "info_overlay"}, :html => default_ajax_link(:update => FOOTER_SEARCH_RESULTS_ID).merge!(:style => "display: inline;") do |f| %>
         
     | 
| 
       5 
     | 
    
         
            -
                      <%= f.text_field :query, :value => "Suchbegriff eingeben", :value => @query, :style => "width: 25%" %>
         
     | 
| 
       6 
     | 
    
         
            -
                    <% end %>
         
     | 
| 
       7 
     | 
    
         
            -
                </div>
         
     | 
| 
       8 
     | 
    
         
            -
              <% @results.each do |results| %>
         
     | 
| 
       9 
     | 
    
         
            -
                <% limit = no_limit ? results.size : 5 %>
         
     | 
| 
       10 
     | 
    
         
            -
                <% unless results.empty? %>
         
     | 
| 
       11 
     | 
    
         
            -
                  <h3 class="result-small-header cf"><%= "Suchergebnisse in #{(results[0].class.name+'_results').to_label}" %> <%= " - Zeige #{limit} von #{results.size}" if (results.size > limit) %>  <%#= link_to_if(results.size > limit, "Alle  (#{results.size})", ) %> 
         
     | 
| 
       12 
     | 
    
         
            -
                    <% if (results.size > limit) %>
         
     | 
| 
       13 
     | 
    
         
            -
                      <span class="metainfo"><%= link_to "Zeige alle Ergebnisse", { :controller => "/search", :action => "all", :only => results[0].class.name, :query => (params[:search][:query] rescue params[:query]), :layout => params[:layout]}, default_ajax_link(:update => FOOTER_SEARCH_RESULTS_ID, :load_message => true, :class => "next-link") %></span>
         
     | 
| 
       14 
     | 
    
         
            -
                    <% elsif no_limit %>
         
     | 
| 
       15 
     | 
    
         
            -
                      <span class="metainfo"><%= link_to "zurück", { :controller => "/search", :action => "all", :query => (params[:search][:query] rescue params[:query]), :layout => params[:layout]}, default_ajax_link(:update => FOOTER_SEARCH_RESULTS_ID, :load_message => true, :class => "prev-link") %></span>
         
     | 
| 
       16 
     | 
    
         
            -
                    <% end %>
         
     | 
| 
       17 
     | 
    
         
            -
                  </h3>
         
     | 
| 
       18 
     | 
    
         
            -
                    <% results.first(limit).each do |r| %>
         
     | 
| 
       19 
     | 
    
         
            -
                      <div class="result-block-small"><%= render :partial => r.result_template_path, :locals => {:result => r, :small => true} %></div>
         
     | 
| 
       20 
     | 
    
         
            -
                    <% end %>
         
     | 
| 
       21 
     | 
    
         
            -
                    <div class="seperator small"> </div>
         
     | 
| 
       22 
     | 
    
         
            -
                <% end %>  
         
     | 
| 
       23 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       24 
     | 
    
         
            -
             
         
     | 
| 
       25 
     | 
    
         
            -
            </div>
         
     | 
| 
         @@ -1,15 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <div class="search-">
         
     | 
| 
       2 
     | 
    
         
            -
            <%= page_title "Suchergebnisse für '#{@query}'" %>
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            <div id="smartsearch-results-container">
         
     | 
| 
       5 
     | 
    
         
            -
              <% @results.each do |results| %>
         
     | 
| 
       6 
     | 
    
         
            -
                <% if results.empty? %>
         
     | 
| 
       7 
     | 
    
         
            -
                <% else %>
         
     | 
| 
       8 
     | 
    
         
            -
                  <h3>Suchergebnisse in <%= "#{results[0].class.name}_results".to_label %> (<%= results.size %>)</h3>
         
     | 
| 
       9 
     | 
    
         
            -
                  <% results.each do |r| %>
         
     | 
| 
       10 
     | 
    
         
            -
                    <%= render :partial => r.result_template_path, :locals => {:result => r } %>
         
     | 
| 
       11 
     | 
    
         
            -
                  <% end %>
         
     | 
| 
       12 
     | 
    
         
            -
                  <%= seperator %>
         
     | 
| 
       13 
     | 
    
         
            -
                <% end %>  
         
     | 
| 
       14 
     | 
    
         
            -
              <% end %>  
         
     | 
| 
       15 
     | 
    
         
            -
            </div>
         
     | 
| 
         @@ -1,8 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <div class="spacer highlighter">
         
     | 
| 
       2 
     | 
    
         
            -
              <div class="field-container-4-cols  cf">
         
     | 
| 
       3 
     | 
    
         
            -
                 <div class="container"><%= link_to result.company.name, {:controller => "/companies", :action => "show", :id => result.company.id}, default_ajax_link() %><br /></div>
         
     | 
| 
       4 
     | 
    
         
            -
                 <div class="center-left"><%= result.name %> (<%= result.art %>)</div>
         
     | 
| 
       5 
     | 
    
         
            -
                 <div class="center-right"><%= result.phone %></div>
         
     | 
| 
       6 
     | 
    
         
            -
                 <div class="container"><%= email_link(result.email) %></div>
         
     | 
| 
       7 
     | 
    
         
            -
              </div>
         
     | 
| 
       8 
     | 
    
         
            -
            </div>
         
     | 
| 
         @@ -1,29 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <% small ||= false %>
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              <% if small == false %>
         
     | 
| 
       4 
     | 
    
         
            -
                <div class="highlighter <%= cycle('odd', 'even', :name => "customer_results") %> <%= result.css_class %>">
         
     | 
| 
       5 
     | 
    
         
            -
                <b><%= link_to result.name, {} %></b><br />
         
     | 
| 
       6 
     | 
    
         
            -
                <div class="field-container-4-cols cf">
         
     | 
| 
       7 
     | 
    
         
            -
                  <div class="container">
         
     | 
| 
       8 
     | 
    
         
            -
                    <div class="metainfo">Status</div>
         
     | 
| 
       9 
     | 
    
         
            -
                    <div><%= result.type(:name) %></div>
         
     | 
| 
       10 
     | 
    
         
            -
                    <div><%= result.status %></div>
         
     | 
| 
       11 
     | 
    
         
            -
                  </div>
         
     | 
| 
       12 
     | 
    
         
            -
                  <div class="center-left">
         
     | 
| 
       13 
     | 
    
         
            -
                    <div class="metainfo">Beginn/Ende</div>
         
     | 
| 
       14 
     | 
    
         
            -
                    <div>von <%= result.starts_at.to_de %></div>
         
     | 
| 
       15 
     | 
    
         
            -
                    <div>bis <%= result.ends_at.to_de %></div>
         
     | 
| 
       16 
     | 
    
         
            -
                  </div>  
         
     | 
| 
       17 
     | 
    
         
            -
                  <div class="center-right">
         
     | 
| 
       18 
     | 
    
         
            -
                    <div class="metainfo">Berater</div>
         
     | 
| 
       19 
     | 
    
         
            -
                    <div><%= result.user.full_name %></div>
         
     | 
| 
       20 
     | 
    
         
            -
                  </div>  
         
     | 
| 
       21 
     | 
    
         
            -
                  <div class="container">
         
     | 
| 
       22 
     | 
    
         
            -
                  </div>
         
     | 
| 
       23 
     | 
    
         
            -
                </div>
         
     | 
| 
       24 
     | 
    
         
            -
                </div>
         
     | 
| 
       25 
     | 
    
         
            -
              <% else %>
         
     | 
| 
       26 
     | 
    
         
            -
                <%= link_to result.name, {} %> (<span class="metainfo"><%= result.user.full_name rescue "-" %></span>)
         
     | 
| 
       27 
     | 
    
         
            -
              	<br />
         
     | 
| 
       28 
     | 
    
         
            -
                <%= result.type(:name) %> | <%= result.status %> | <%= result.starts_at.to_de %>
         
     | 
| 
       29 
     | 
    
         
            -
              <% end %>
         
     | 
| 
         @@ -1,25 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <% small ||= false %>
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            <% if small == false %>
         
     | 
| 
       4 
     | 
    
         
            -
            <div class="highlighter <%= cycle('odd', 'even', :name => "company_results") %>">
         
     | 
| 
       5 
     | 
    
         
            -
              <b><%= link_to result.name, {} %></b><br />
         
     | 
| 
       6 
     | 
    
         
            -
              <div class="field-container-4-cols cf">
         
     | 
| 
       7 
     | 
    
         
            -
                <div class="container">
         
     | 
| 
       8 
     | 
    
         
            -
                  <div class="metainfo">Anbindung</div>
         
     | 
| 
       9 
     | 
    
         
            -
                  <div><%= result.direct ? "Direktanbindung" : "keine Direktanbindung" %></div>
         
     | 
| 
       10 
     | 
    
         
            -
                </div>
         
     | 
| 
       11 
     | 
    
         
            -
                <div class="center-left">
         
     | 
| 
       12 
     | 
    
         
            -
                  <div class="metainfo">VP-Nr</div>
         
     | 
| 
       13 
     | 
    
         
            -
                  <div><%= result.direct ? result.vp_nr : "keine VP-Nummer" %></div>
         
     | 
| 
       14 
     | 
    
         
            -
                </div>  
         
     | 
| 
       15 
     | 
    
         
            -
                <div class="center-right">
         
     | 
| 
       16 
     | 
    
         
            -
                  
         
     | 
| 
       17 
     | 
    
         
            -
                </div>  
         
     | 
| 
       18 
     | 
    
         
            -
                <div class="container">
         
     | 
| 
       19 
     | 
    
         
            -
                </div>
         
     | 
| 
       20 
     | 
    
         
            -
              </div>
         
     | 
| 
       21 
     | 
    
         
            -
            </div>
         
     | 
| 
       22 
     | 
    
         
            -
            <% else %>
         
     | 
| 
       23 
     | 
    
         
            -
              <%= link_to result.name, {:controller => "/companies", :action => "show", :id => result.id}, default_ajax_link() %><br />
         
     | 
| 
       24 
     | 
    
         
            -
              <%#= result.direct ? "Direktanbindung" : "keine Direktanbindung" %> / <%#= result.direct ? "VP-Nr: #{result.vp_nr}" : "keine VP-Nummer" %>
         
     | 
| 
       25 
     | 
    
         
            -
            <% end %>
         
     | 
| 
         @@ -1,26 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <div class="highlighter <%= cycle('odd', 'even', :name => "customer_results") %>">
         
     | 
| 
       2 
     | 
    
         
            -
              <b><%= link_to result.customer.full_name, :controller => "/concepts", :action => "data_form", :concept_id => result.id %></b><br />
         
     | 
| 
       3 
     | 
    
         
            -
              <div class="field-container-4-cols cf">
         
     | 
| 
       4 
     | 
    
         
            -
                <div class="container">
         
     | 
| 
       5 
     | 
    
         
            -
                  <div class="metainfo">Status</div>
         
     | 
| 
       6 
     | 
    
         
            -
                    <div>
         
     | 
| 
       7 
     | 
    
         
            -
                    <% if result.firma_concept %>
         
     | 
| 
       8 
     | 
    
         
            -
                      Firmenkonzept
         
     | 
| 
       9 
     | 
    
         
            -
                    <% elsif result.family_concept %>  
         
     | 
| 
       10 
     | 
    
         
            -
                      Familienkonzept
         
     | 
| 
       11 
     | 
    
         
            -
                    <% else %>
         
     | 
| 
       12 
     | 
    
         
            -
                      Standardkonzept
         
     | 
| 
       13 
     | 
    
         
            -
                    <% end %>
         
     | 
| 
       14 
     | 
    
         
            -
                    <%= progress_bar(result.ist_concept.progress_percent) %>
         
     | 
| 
       15 
     | 
    
         
            -
                  </div>
         
     | 
| 
       16 
     | 
    
         
            -
                </div>
         
     | 
| 
       17 
     | 
    
         
            -
                <div class="center-left">
         
     | 
| 
       18 
     | 
    
         
            -
                  <div class="metainfo">Datum</div>
         
     | 
| 
       19 
     | 
    
         
            -
                  <div>erstellt: <%= result.created_at.to_de %></div>
         
     | 
| 
       20 
     | 
    
         
            -
                </div>  
         
     | 
| 
       21 
     | 
    
         
            -
                <div class="center-right">
         
     | 
| 
       22 
     | 
    
         
            -
                </div>  
         
     | 
| 
       23 
     | 
    
         
            -
                <div class="container">
         
     | 
| 
       24 
     | 
    
         
            -
                </div>
         
     | 
| 
       25 
     | 
    
         
            -
              </div>
         
     | 
| 
       26 
     | 
    
         
            -
            </div>
         
     | 
| 
         @@ -1,51 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <% small ||= false %>
         
     | 
| 
       2 
     | 
    
         
            -
              
         
     | 
| 
       3 
     | 
    
         
            -
              <% if small == false %>
         
     | 
| 
       4 
     | 
    
         
            -
            <div class="highlighter <%= cycle('odd', 'even', :name => "customer_results") %>">
         
     | 
| 
       5 
     | 
    
         
            -
                <b><%= link_to result.full_name, :controller => "/customers", :action => "show", :id => result.id %></b><br />
         
     | 
| 
       6 
     | 
    
         
            -
                <div><%= result.notes.clear_html rescue nil %></div>
         
     | 
| 
       7 
     | 
    
         
            -
                <div class="field-container-4-cols cf">
         
     | 
| 
       8 
     | 
    
         
            -
                  <div class="container">
         
     | 
| 
       9 
     | 
    
         
            -
                    <div class="metainfo">Kontaktdaten</div>
         
     | 
| 
       10 
     | 
    
         
            -
                    <div><%= result.personal_data.phone %></div>
         
     | 
| 
       11 
     | 
    
         
            -
                    <div><%= result.personal_data.mobile %></div>
         
     | 
| 
       12 
     | 
    
         
            -
                    <div><%= result.personal_data.email %></div>
         
     | 
| 
       13 
     | 
    
         
            -
                  </div>
         
     | 
| 
       14 
     | 
    
         
            -
                  <div class="center-left">
         
     | 
| 
       15 
     | 
    
         
            -
                    <div class="metainfo">Anschrift</div>
         
     | 
| 
       16 
     | 
    
         
            -
                    <div><%= result.personal_data.adress %></div>
         
     | 
| 
       17 
     | 
    
         
            -
                  </div>  
         
     | 
| 
       18 
     | 
    
         
            -
                  <div class="center-right">
         
     | 
| 
       19 
     | 
    
         
            -
                    <div class="metainfo">Persönliches</div>
         
     | 
| 
       20 
     | 
    
         
            -
                    <div>geb. <%= result.personal_data.birthday %></div>
         
     | 
| 
       21 
     | 
    
         
            -
                  </div>  
         
     | 
| 
       22 
     | 
    
         
            -
                  <div class="container">
         
     | 
| 
       23 
     | 
    
         
            -
                    <div class="metainfo">
         
     | 
| 
       24 
     | 
    
         
            -
                        <% if result.concepts.empty? %>
         
     | 
| 
       25 
     | 
    
         
            -
                          keine Konzepte
         
     | 
| 
       26 
     | 
    
         
            -
                        <% else %>
         
     | 
| 
       27 
     | 
    
         
            -
                          <%= result.ist_concepts.size %> Konzept(e)
         
     | 
| 
       28 
     | 
    
         
            -
                        <% end %>  
         
     | 
| 
       29 
     | 
    
         
            -
                    </div>
         
     | 
| 
       30 
     | 
    
         
            -
                      <% result.ist_concepts.each do |concept| %>
         
     | 
| 
       31 
     | 
    
         
            -
                        <% if concept.firma_concept %>
         
     | 
| 
       32 
     | 
    
         
            -
                          Firmenkonzept
         
     | 
| 
       33 
     | 
    
         
            -
                        <% elsif concept.family_concept %>  
         
     | 
| 
       34 
     | 
    
         
            -
                          Familienkonzept
         
     | 
| 
       35 
     | 
    
         
            -
                        <% else %>
         
     | 
| 
       36 
     | 
    
         
            -
                          Standardkonzept
         
     | 
| 
       37 
     | 
    
         
            -
                        <% end %> (<%= concept.created_at.to_de %>)
         
     | 
| 
       38 
     | 
    
         
            -
                        <%= progress_bar(concept.progress_percent, :size => :small) %>
         
     | 
| 
       39 
     | 
    
         
            -
                      <% end %>
         
     | 
| 
       40 
     | 
    
         
            -
                  </div>
         
     | 
| 
       41 
     | 
    
         
            -
                </div>
         
     | 
| 
       42 
     | 
    
         
            -
              </div>  
         
     | 
| 
       43 
     | 
    
         
            -
              <% else %>  
         
     | 
| 
       44 
     | 
    
         
            -
                <div class="field-container-4-cols highlighter  cf">
         
     | 
| 
       45 
     | 
    
         
            -
                   <div class="container"><%= link_to(result.full_name, {:controller => "/customers", :action => "customer_detail_ajax", :id => result.id, :layout => "ajax_overlay"}, default_ajax_link()) %> </div>
         
     | 
| 
       46 
     | 
    
         
            -
                   <div class="center-left metainfo"><%= result.user.full_name rescue "-" %></div>
         
     | 
| 
       47 
     | 
    
         
            -
                   <div class="center-right"></div>
         
     | 
| 
       48 
     | 
    
         
            -
                   <div class="container"></div>
         
     | 
| 
       49 
     | 
    
         
            -
                </div>
         
     | 
| 
       50 
     | 
    
         
            -
            	    	
         
     | 
| 
       51 
     | 
    
         
            -
              <% end %>
         
     | 
| 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <%= render :partial => "/smart/search/results/customer", :locals => {:result => result, :small => small} %>
         
     | 
| 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <%= render :partial => "/smart/search/results/customer", :locals => {:result => result} %>
         
     |