tkh_search 0.0.2 → 0.0.3
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 +4 -4
- data/CHANGELOG.md +20 -0
- data/README.md +14 -3
- data/app/controllers/search_controller.rb +1 -1
- data/app/views/search/_search_results.html.erb +8 -1
- data/lib/tkh_search/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f841b1c6de3922288a8b195e26bdf5eae7ff36a1
|
4
|
+
data.tar.gz: f6c22d243a74e9ce7d2a9c73f3770e094bd7fa91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7b51e786aeee4008a5b3887a6edc1bf9c7796c3fd773846d1c467840a6edf41e0b1b010e4e76e16002d39c3dd5c1e366e80c660dd33cf958662029faeb3ab2a
|
7
|
+
data.tar.gz: 1be653cc71a1ec89da1bf45ed56d1f7a8e43aaaba423ccc61a9c75c1e6d0be00cf463599f003909ebae55fe1768e004ebf30fecb0c9da086727f031aca46db41
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# TKH Search
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
## 0.0.3
|
6
|
+
|
7
|
+
* Added this changelog file.
|
8
|
+
* Did a bit of eager loading during searches but the algorithm is still VERY slow. Serious ptimization is in the works.
|
9
|
+
* Search results work when model has title attribute but no name attribute.
|
10
|
+
* Improved the readme file a bit.
|
11
|
+
|
12
|
+
|
13
|
+
## 0.0.2
|
14
|
+
|
15
|
+
* Changed a model name to debug Constant name conflict
|
16
|
+
|
17
|
+
|
18
|
+
## 0.0.1
|
19
|
+
|
20
|
+
* Initial release with basic indexing and search
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# TkhSearch
|
2
2
|
|
3
|
-
This is a simple Rails gem search engine. It uses the local database for reverse indexing and to log search queries. Multi-model searches are supported.
|
3
|
+
This is a simple Rails gem full text search engine. It uses the local database for reverse indexing and to log search queries. Multi-model searches are supported.
|
4
4
|
|
5
5
|
|
6
6
|
## Installation
|
@@ -19,6 +19,10 @@ Install initializer and migrations:
|
|
19
19
|
|
20
20
|
$ rake tkh_search:install
|
21
21
|
|
22
|
+
Or, upon updating the gem:
|
23
|
+
|
24
|
+
$ rake tkh_search:update
|
25
|
+
|
22
26
|
Run the migrations:
|
23
27
|
|
24
28
|
$ rake db:migrate
|
@@ -29,8 +33,11 @@ Run the migrations:
|
|
29
33
|
In any model you want to index and search, copy/paste and customize the following code:
|
30
34
|
|
31
35
|
```ruby
|
32
|
-
tkh_searchable
|
36
|
+
tkh_searchable # for after_save re-indexing hooks
|
33
37
|
def self.tkh_search_indexable_fields
|
38
|
+
# The key is the attribute name, the value is the desired strength.
|
39
|
+
# By the way, your model needs a title or a name attribute. Real or virtual.
|
40
|
+
# Necessary to display result links
|
34
41
|
indexable_fields = {
|
35
42
|
title: 8,
|
36
43
|
description: 3,
|
@@ -47,7 +54,7 @@ To index a model's records, use the _'reverse_indexing'_ class method. Example:
|
|
47
54
|
ModelName.reverse_indexing
|
48
55
|
```
|
49
56
|
|
50
|
-
Having configured all the models you wish to index in your search engine, you can index them all by first setting up the initializer.
|
57
|
+
Having configured all the models you wish to index in your search engine, you can index them all at once by first setting up the initializer.
|
51
58
|
|
52
59
|
```ruby
|
53
60
|
TkhSearch::TkhSearchable.indexable_models = %w( Page Post Event WhateverYouWant )
|
@@ -55,6 +62,10 @@ TkhSearch::TkhSearchable.indexable_models = %w( Page Post Event WhateverYouWant
|
|
55
62
|
|
56
63
|
and secondly, by pointing your browser to: /index_all_models
|
57
64
|
|
65
|
+
#### What about new and updated records?
|
66
|
+
|
67
|
+
Any single record will be indexed upon saving.
|
68
|
+
|
58
69
|
|
59
70
|
## Searching your site
|
60
71
|
|
@@ -7,7 +7,7 @@ class SearchController < ApplicationController
|
|
7
7
|
token = SecureRandom.base64
|
8
8
|
search_terms = []
|
9
9
|
@query.split.each do |query_word|
|
10
|
-
search_terms << TkhSearchTerm.find_by( word: query_word )
|
10
|
+
search_terms << TkhSearchTerm.includes(:tkh_search_instances).find_by( word: query_word )
|
11
11
|
end
|
12
12
|
if search_terms.any?
|
13
13
|
search_terms.each do |search_term|
|
@@ -2,9 +2,16 @@
|
|
2
2
|
<% if search_results.any? %>
|
3
3
|
<% search_results.each do |result| %>
|
4
4
|
<% record = (Kernel.const_get result.model_name).find(result.model_record_id) %>
|
5
|
+
<% if defined? record.name %>
|
6
|
+
<% link_label = record.name %>
|
7
|
+
<% elsif defined? record.title %>
|
8
|
+
<% link_label = record.title %>
|
9
|
+
<% else %>
|
10
|
+
<% link_label = 'no title or name' %>
|
11
|
+
<% end %>
|
5
12
|
<%= content_tag :li,
|
6
13
|
"<span class='sr-model-name'>#{result.model_name}</span> -
|
7
|
-
<span class='sr-
|
14
|
+
<span class='sr-record-link'>#{link_to link_label, record}</span> -
|
8
15
|
<span class='sr-rating'>#{result.rating}</span>
|
9
16
|
".html_safe
|
10
17
|
%>
|
data/lib/tkh_search/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tkh_search
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Swami Atma
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -76,6 +76,7 @@ extra_rdoc_files: []
|
|
76
76
|
files:
|
77
77
|
- ".gitignore"
|
78
78
|
- ".ruby-version"
|
79
|
+
- CHANGELOG.md
|
79
80
|
- Gemfile
|
80
81
|
- LICENSE.txt
|
81
82
|
- README.md
|