escargot 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +27 -7
- data/lib/escargot.rb +2 -1
- data/lib/escargot/activerecord_ex.rb +1 -1
- data/lib/escargot/version.rb +1 -1
- data/test/nrt_enqueue_test.rb +6 -9
- data/test/search_test.rb +11 -0
- metadata +4 -4
data/README.markdown
CHANGED
@@ -13,7 +13,7 @@ and (if you want to use the **optional** distributed indexing mode) Redis.
|
|
13
13
|
Usage
|
14
14
|
=======
|
15
15
|
|
16
|
-
First, [download and start ElasticSearch](http://www.elasticsearch.
|
16
|
+
First, [download](http://www.elasticsearch.org/download/) and [start ElasticSearch](http://www.elasticsearch.org/guide/reference/setup/installation.html) (it's really simple). With the default setup of
|
17
17
|
of ElasticSearch (listening to localhost and port 9200) no configuration of the plugin is
|
18
18
|
necessary.
|
19
19
|
|
@@ -132,14 +132,14 @@ Pagination
|
|
132
132
|
|
133
133
|
Query DSL
|
134
134
|
----------------
|
135
|
-
Instead of a string, you can pass a query in ElasticSearch's [Query DSL](http://www.elasticsearch.
|
135
|
+
Instead of a string, you can pass a query in ElasticSearch's [Query DSL](http://www.elasticsearch.org/guide/reference/query-dsl/)
|
136
136
|
giving you access to the full range of search features.
|
137
137
|
|
138
|
-
Bird.search(:match_all =>
|
138
|
+
Bird.search(:match_all => { })
|
139
139
|
|
140
140
|
Bird.search(:fuzzy => {:name => 'oriale'})
|
141
141
|
|
142
|
-
Bird.search(:custom_score => {:query => {:match_all =>
|
142
|
+
Bird.search(:custom_score => {:query => {:match_all => { } }, :script => "random()"})
|
143
143
|
|
144
144
|
Bird.search(:dis_max => {
|
145
145
|
:tie_breaker => 0.7,
|
@@ -162,7 +162,27 @@ giving you access to the full range of search features.
|
|
162
162
|
}
|
163
163
|
}
|
164
164
|
)
|
165
|
-
|
165
|
+
|
166
|
+
|
167
|
+
Query DSL with API Search
|
168
|
+
----------------
|
169
|
+
Any query Hash in Escargot a is a Query DSL by default, so anything you put in the first param is wrapper with
|
170
|
+
the term "query", but sometimes you need puts some params out Query DSL, using options of [API Search](http://www.elasticsearch.org/guide/reference/api/search/), you can do this
|
171
|
+
using the option *:query_dsl => false* in the query Hash, of course remember to put the term *:query => {your query}* to work correctly
|
172
|
+
|
173
|
+
User.search (
|
174
|
+
:track_scores =>true,
|
175
|
+
:sort =>[ {
|
176
|
+
:name => {:reverse => true }
|
177
|
+
}
|
178
|
+
],
|
179
|
+
:query => {
|
180
|
+
:term => {:name => "john"}
|
181
|
+
},
|
182
|
+
:query_dsl => false
|
183
|
+
)
|
184
|
+
|
185
|
+
|
166
186
|
Facets
|
167
187
|
----------------
|
168
188
|
|
@@ -234,7 +254,7 @@ If you want the search to be insensitive to accents and other diacritics:
|
|
234
254
|
end
|
235
255
|
|
236
256
|
The full list of available options for index creation is documented at
|
237
|
-
[http://www.elasticsearch.
|
257
|
+
[http://www.elasticsearch.org/guide/reference/index-modules/](http://www.elasticsearch.org/guide/reference/index-modules/)
|
238
258
|
|
239
259
|
Mapping options
|
240
260
|
----------------
|
@@ -259,7 +279,7 @@ Some examples:
|
|
259
279
|
end
|
260
280
|
|
261
281
|
|
262
|
-
See the [ElasticSearch Documentation](http://www.elasticsearch.
|
282
|
+
See the [ElasticSearch Documentation](http://www.elasticsearch.org/guide/reference/mapping/) for mappings.
|
263
283
|
|
264
284
|
Distributed indexing
|
265
285
|
=======
|
data/lib/escargot.rb
CHANGED
@@ -68,7 +68,7 @@ module Escargot
|
|
68
68
|
fields_list = [fields_list] unless fields_list.kind_of?(Array)
|
69
69
|
|
70
70
|
if !options[:query]
|
71
|
-
options[:query] = {:match_all =>
|
71
|
+
options[:query] = {:match_all => { } }
|
72
72
|
elsif options[:query].kind_of?(String)
|
73
73
|
options[:query] = {:query_string => {:query => options[:query]}}
|
74
74
|
end
|
data/lib/escargot/version.rb
CHANGED
data/test/nrt_enqueue_test.rb
CHANGED
@@ -17,7 +17,11 @@ class NrtEnqueue < Test::Unit::TestCase
|
|
17
17
|
User.create(:name => 'Peter the Young')
|
18
18
|
User.create(:name => 'Peter the Old')
|
19
19
|
User.create(:name => 'Bob the Skinny')
|
20
|
-
User.create(:name => 'Jamie the Flying Machine')
|
20
|
+
User.create(:name => 'Jamie the Flying Machine')
|
21
|
+
|
22
|
+
# the Resque tasks have not run yet, so there should be nothing in the index
|
23
|
+
# but now run the Resque tasks and check that the index is good for each test
|
24
|
+
Resque.run!
|
21
25
|
end
|
22
26
|
|
23
27
|
def teardown
|
@@ -26,9 +30,6 @@ class NrtEnqueue < Test::Unit::TestCase
|
|
26
30
|
end
|
27
31
|
|
28
32
|
def test_document_creation
|
29
|
-
# the Resque tasks have not run yet, so there should be nothing in the index
|
30
|
-
# but now run the Resque tasks and check that the index is good
|
31
|
-
Resque.run!
|
32
33
|
User.refresh_index
|
33
34
|
|
34
35
|
assert_equal 5, User.search("*").total_entries
|
@@ -38,10 +39,8 @@ class NrtEnqueue < Test::Unit::TestCase
|
|
38
39
|
end
|
39
40
|
|
40
41
|
def test_document_updates
|
41
|
-
# now run the Resque tasks and check that the index is good
|
42
|
-
Resque.run!
|
43
42
|
User.refresh_index
|
44
|
-
|
43
|
+
|
45
44
|
assert_equal 5, User.search("*").total_entries
|
46
45
|
|
47
46
|
# make a change in a document
|
@@ -62,8 +61,6 @@ class NrtEnqueue < Test::Unit::TestCase
|
|
62
61
|
end
|
63
62
|
|
64
63
|
def test_document_deletes
|
65
|
-
# now run the Resque tasks and check that the index is good
|
66
|
-
Resque.run!
|
67
64
|
User.refresh_index
|
68
65
|
|
69
66
|
assert_equal User.search("*").total_entries, 5
|
data/test/search_test.rb
CHANGED
@@ -46,6 +46,17 @@ class BasicSearchTest < Test::Unit::TestCase
|
|
46
46
|
assert_equal results.total_entries, 2
|
47
47
|
assert_equal User.search_count(:term => {:name => "john"}), 2
|
48
48
|
end
|
49
|
+
|
50
|
+
def test_search_without_query_dsl
|
51
|
+
# By default in Escargot any query Hash is a Query DSL, so anything you put in the first param is wrapper with
|
52
|
+
# this "query = {:query => {query}}", but sometimes if you need puts some params OUT Query DSL you can do this
|
53
|
+
# putting in the query Hash the option ":query_dsl => false", of course remember to put the term ":query => {your query}"
|
54
|
+
# to work correctly
|
55
|
+
|
56
|
+
results = User.search(:sort =>[{ :country_code => {:reverse => true }}] , :query => {:term => {:name => "john"}}, :query_dsl => false,:track_scores =>true)
|
57
|
+
assert_equal results.first.name, 'John the Skinny Too'
|
58
|
+
end
|
59
|
+
|
49
60
|
|
50
61
|
def test_facets
|
51
62
|
assert_equal User.facets(:country_code)[:country_code]["ca"], 2
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: escargot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Angel Faus
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-04-05 00:00:00 -03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|