pg_searchable 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0f35f235f18026427b95a9fd5620f83ad6236c6
|
4
|
+
data.tar.gz: 712e910b1aa3bf8a66e7bd353cb0fc18358f2626
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5ba190060495e370921954a87f011b81806c5ab3122ddb9c878109ad77ee21280e7d064e42e5844f154da294a45d90ef1933398c5f63bce5a5e698e433af999
|
7
|
+
data.tar.gz: 9f7b4d1dfc96ab333f6181dd549e7af662ca10287e876ce014ab7d786356293dfd93194892f645ee1f215d96a0eb4b0b4fc3bffe0fa61b25009dc0b4e9d75171
|
@@ -27,6 +27,10 @@ module PgSearchable
|
|
27
27
|
scoped.search_for(term, options)
|
28
28
|
end
|
29
29
|
|
30
|
+
def close_to(longitude, latitude, distance_in_miles = 5)
|
31
|
+
scoped.close_to(longitude, latitude, distance_in_miles)
|
32
|
+
end
|
33
|
+
|
30
34
|
private
|
31
35
|
def _pg_searchable_options
|
32
36
|
@_pg_searchable_options ||= DEFAULT_OPTIONS.merge(columns: _pg_searchable_columns)
|
@@ -64,6 +64,21 @@ module ActiveRecord
|
|
64
64
|
SQL
|
65
65
|
end
|
66
66
|
|
67
|
+
def add_pg_searchable_point_index(table_name, longitude_column, latitude_column)
|
68
|
+
execute %{CREATE INDEX index_#{table_name}_on_#{longitude_column}_#{latitude_column}_point ON #{table_name} using gist (
|
69
|
+
ST_GeographyFromText(
|
70
|
+
'SRID=4326;POINT(' || #{table_name}.#{longitude_column} || ' ' || #{table_name}.#{latitude_column} || ')'
|
71
|
+
)
|
72
|
+
)
|
73
|
+
}
|
74
|
+
end
|
75
|
+
|
76
|
+
def remove_pg_searchable_point_index(table_name, longitude_column, latitude_column)
|
77
|
+
execute %{
|
78
|
+
DROP INDEX index_#{table_name}_on_#{longitude_column}_#{latitude_column}_point
|
79
|
+
}
|
80
|
+
end
|
81
|
+
|
67
82
|
private
|
68
83
|
|
69
84
|
def _add_pg_searchable_trigger(table_name, column_name, trigger_type = 'tsearch', column_data = '')
|
@@ -16,14 +16,18 @@ module PgSearchable
|
|
16
16
|
conditions
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
joins(options[:in]).where("#{conditions.join(' OR ')}")
|
19
|
+
where("#{conditions.join(' OR ')}")
|
22
20
|
end
|
23
21
|
|
24
|
-
def
|
25
|
-
|
26
|
-
|
22
|
+
def close_to(longitude, latitude, distance_in_miles = 5)
|
23
|
+
distance_in_meters = (distance_in_miles.to_f * 1609.34).ceil
|
24
|
+
longitude_column = "longitude"
|
25
|
+
latitude_column = "latitude"
|
26
|
+
|
27
|
+
where("ST_DWithin(
|
28
|
+
ST_GeographyFromText('SRID=4326;POINT(' || #{arel_table.name}.#{longitude_column} || ' ' || #{arel_table.name}.#{latitude_column} || ')'),
|
29
|
+
ST_GeographyFromText('SRID=4326;POINT(%f %f)'), %d
|
30
|
+
)", longitude, latitude, distance_in_meters)
|
27
31
|
end
|
28
32
|
|
29
33
|
def rank_by(rank)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_searchable
|
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
|
- Stephen St. Martin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: arel
|