moonstone 0.6.0 → 0.6.1
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.
- data/Rakefile +1 -1
- data/lib/moonstone/engine.rb +17 -3
- data/lib/moonstone/racker/client.rb +39 -0
- data/lib/moonstone/racker/local_search.rb +2 -2
- metadata +73 -75
data/Rakefile
CHANGED
data/lib/moonstone/engine.rb
CHANGED
@@ -2,7 +2,8 @@ module Moonstone
|
|
2
2
|
class Engine
|
3
3
|
include Lucene::Index
|
4
4
|
include Lucene::Search
|
5
|
-
|
5
|
+
include Lucene::Document
|
6
|
+
|
6
7
|
attr_reader :store, :similarity
|
7
8
|
|
8
9
|
# :store should be a String or some kind of Lucene::Store::Directory
|
@@ -105,6 +106,13 @@ module Moonstone
|
|
105
106
|
delete_documents([term])
|
106
107
|
end
|
107
108
|
|
109
|
+
def optimize
|
110
|
+
IndexWriter.open(@store, analyzer) do |writer|
|
111
|
+
writer.optimize
|
112
|
+
end
|
113
|
+
refresh_searcher
|
114
|
+
end
|
115
|
+
|
108
116
|
# Takes any kind of input object parsable by your #create_query method. Quack.
|
109
117
|
# Options patterns (see javadoc for org.apache.lucene.search.Searcher):
|
110
118
|
# Returns a TopDocs object
|
@@ -143,13 +151,19 @@ module Moonstone
|
|
143
151
|
# Returns an instance of the Analyzer class defined within
|
144
152
|
# this class's namespace.
|
145
153
|
def analyzer
|
146
|
-
@analyzer ||= self.class::Analyzer.new
|
154
|
+
@analyzer ||= (defined?(self.class::Analyzer) ? self.class::Analyzer.new : Lucene::Analysis::StandardAnalyzer.new )
|
155
|
+
end
|
156
|
+
|
157
|
+
# Analyze and index all fields.
|
158
|
+
# Override this method for custom behavior.
|
159
|
+
def doc_from(record)
|
160
|
+
Doc.create(record)
|
147
161
|
end
|
148
162
|
|
149
163
|
# Opens an IndexWriter for the duration of the block.
|
150
164
|
# engine.writer { |w| w.add_document(doc) }
|
151
165
|
def writer
|
152
|
-
IndexWriter.open(@store,
|
166
|
+
IndexWriter.open(@store, analyzer) do |writer|
|
153
167
|
writer.set_similarity(@similarity.new) if @similarity
|
154
168
|
yield writer
|
155
169
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Moonstone
|
2
|
+
module Racker
|
3
|
+
module LocalClient
|
4
|
+
|
5
|
+
def search(topic, location, options={})
|
6
|
+
raise "Unable to use supplied location: #{location}" unless loc = geo(location)
|
7
|
+
query = {:input => topic, :lat => loc['latitude'].to_s, :lon => loc['longitude'].to_s}
|
8
|
+
r = HTTParty.get("#{uri}/search.json", :query => query)
|
9
|
+
hash = {}
|
10
|
+
r.each { |k,v| hash[k] = v }
|
11
|
+
hash['location'] = loc
|
12
|
+
hash
|
13
|
+
rescue Errno::ECONNREFUSED
|
14
|
+
{}
|
15
|
+
end
|
16
|
+
|
17
|
+
def geo(location)
|
18
|
+
lat = location['lat'] || location['latitude'] || location['LAT'] ||
|
19
|
+
location[:lat] || location[:latitude]
|
20
|
+
lon = location['lon'] || location['long'] || location['LON'] ||
|
21
|
+
location['longitude'] || location[:lon] ||
|
22
|
+
location[:long] || location[:longitude]
|
23
|
+
{'latitude' => lat, "longitude" => lon} if lat && lon
|
24
|
+
end
|
25
|
+
|
26
|
+
def index_info
|
27
|
+
HTTParty.get("#{uri}/index_info.json")
|
28
|
+
rescue Errno::ECONNREFUSED
|
29
|
+
{}
|
30
|
+
end
|
31
|
+
|
32
|
+
def details(id)
|
33
|
+
HTTParty.get("#{uri}/document.json", :query => {:id => id})
|
34
|
+
rescue Errno::ECONNREFUSED
|
35
|
+
{}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -5,7 +5,7 @@ module Moonstone
|
|
5
5
|
include Moonstone::Racker
|
6
6
|
|
7
7
|
def json_GET_search(request)
|
8
|
-
args = request.params.values_at('
|
8
|
+
args = request.params.values_at('topic', 'lat', 'lon')
|
9
9
|
options = search_options(request)
|
10
10
|
args << options
|
11
11
|
t = Time.now
|
@@ -20,7 +20,7 @@ module Moonstone
|
|
20
20
|
def json_POST_search(request)
|
21
21
|
options = search_options(request)
|
22
22
|
data = request.env['rack.input'].read
|
23
|
-
JSON.parse(data).map do |
|
23
|
+
JSON.parse(data).map do |topic, lat, lon|
|
24
24
|
t = Time.now
|
25
25
|
results = search(input, lat, lon, options).to_hash
|
26
26
|
results[:time] = Time.now - t
|
metadata
CHANGED
@@ -1,91 +1,89 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
+
name: moonstone
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Matthew King
|
8
|
+
- Jason Rush
|
9
|
+
- Jay Donnell
|
10
|
+
- Dan Yoder
|
11
|
+
autorequire:
|
12
|
+
bindir: bin
|
13
|
+
cert_chain: []
|
14
|
+
|
15
|
+
date: 2009-11-27 00:00:00 -07:00
|
16
|
+
default_executable:
|
17
|
+
dependencies:
|
18
|
+
- !ruby/object:Gem::Dependency
|
19
|
+
name: rspec
|
20
|
+
type: :runtime
|
21
|
+
version_requirement:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: "0"
|
27
|
+
version:
|
28
|
+
description:
|
29
|
+
email: self@automatthew.com
|
30
|
+
executables: []
|
31
|
+
|
2
32
|
extensions: []
|
3
33
|
|
34
|
+
extra_rdoc_files: []
|
35
|
+
|
36
|
+
files:
|
37
|
+
- lib/moonstone.rb
|
38
|
+
- lib/jar/lucene-core-2.4.0.jar
|
39
|
+
- lib/jar/lucene-spellchecker-2.4-dev.jar
|
40
|
+
- lib/lucene/analysis.rb
|
41
|
+
- lib/lucene/document.rb
|
42
|
+
- lib/lucene/function.rb
|
43
|
+
- lib/lucene/index.rb
|
44
|
+
- lib/lucene/query_parser.rb
|
45
|
+
- lib/lucene/search.rb
|
46
|
+
- lib/lucene/store.rb
|
47
|
+
- lib/moonstone/analyzer.rb
|
48
|
+
- lib/moonstone/engine.rb
|
49
|
+
- lib/moonstone/filter.rb
|
50
|
+
- lib/moonstone/index_inspection.rb
|
51
|
+
- lib/moonstone/multi_analyzer.rb
|
52
|
+
- lib/moonstone/queued_filter.rb
|
53
|
+
- lib/moonstone/racker.rb
|
54
|
+
- lib/moonstone/tokenizer.rb
|
55
|
+
- lib/moonstone/filters/synonymer.rb
|
56
|
+
- lib/moonstone/racker/basic_search.rb
|
57
|
+
- lib/moonstone/racker/client.rb
|
58
|
+
- lib/moonstone/racker/local_search.rb
|
59
|
+
- Rakefile
|
60
|
+
has_rdoc: true
|
4
61
|
homepage:
|
5
|
-
|
62
|
+
licenses: []
|
6
63
|
|
7
|
-
version: !ruby/object:Gem::Version
|
8
|
-
version: 0.6.0
|
9
64
|
post_install_message:
|
10
|
-
date: 2009-06-16 07:00:00 +00:00
|
11
|
-
files:
|
12
|
-
- lib/jar
|
13
|
-
- lib/lucene
|
14
|
-
- lib/moonstone
|
15
|
-
- lib/moonstone.rb
|
16
|
-
- lib/jar/lucene-core-2.4.0.jar
|
17
|
-
- lib/jar/lucene-spellchecker-2.4-dev.jar
|
18
|
-
- lib/lucene/analysis.rb
|
19
|
-
- lib/lucene/document.rb
|
20
|
-
- lib/lucene/function.rb
|
21
|
-
- lib/lucene/index.rb
|
22
|
-
- lib/lucene/query_parser.rb
|
23
|
-
- lib/lucene/search.rb
|
24
|
-
- lib/lucene/store.rb
|
25
|
-
- lib/moonstone/analyzer.rb
|
26
|
-
- lib/moonstone/engine.rb
|
27
|
-
- lib/moonstone/filter.rb
|
28
|
-
- lib/moonstone/filters
|
29
|
-
- lib/moonstone/index_inspection.rb
|
30
|
-
- lib/moonstone/multi_analyzer.rb
|
31
|
-
- lib/moonstone/queued_filter.rb
|
32
|
-
- lib/moonstone/racker
|
33
|
-
- lib/moonstone/racker.rb
|
34
|
-
- lib/moonstone/tokenizer.rb
|
35
|
-
- lib/moonstone/filters/synonymer.rb
|
36
|
-
- lib/moonstone/racker/basic_search.rb
|
37
|
-
- lib/moonstone/racker/local_search.rb
|
38
|
-
- Rakefile
|
39
|
-
rubygems_version: 1.3.1
|
40
65
|
rdoc_options: []
|
41
66
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
name: moonstone
|
46
|
-
has_rdoc: true
|
47
|
-
platform: ruby
|
48
|
-
summary: Moonstone Agile Search Framework
|
49
|
-
default_executable:
|
50
|
-
bindir: bin
|
51
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
52
|
-
version:
|
53
|
-
requirements:
|
54
|
-
- - '>='
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: "0"
|
67
|
+
require_paths:
|
68
|
+
- lib
|
57
69
|
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: "0"
|
58
74
|
version:
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
76
|
requirements:
|
60
|
-
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: "0"
|
63
|
-
require_paths:
|
64
|
-
- lib
|
65
|
-
specification_version: 2
|
66
|
-
test_files: []
|
67
|
-
|
68
|
-
dependencies:
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
type: :runtime
|
71
|
-
name: rspec
|
72
|
-
version_requirement:
|
73
|
-
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
version:
|
75
|
-
requirements:
|
76
|
-
- - '>='
|
77
|
+
- - ">="
|
77
78
|
- !ruby/object:Gem::Version
|
78
79
|
version: "0"
|
79
|
-
|
80
|
-
email: self@automatthew.com
|
81
|
-
authors:
|
82
|
-
- Matthew King
|
83
|
-
- Jason Rush
|
84
|
-
- Jay Donnell
|
85
|
-
- Dan Yoder
|
86
|
-
extra_rdoc_files: []
|
87
|
-
|
80
|
+
version:
|
88
81
|
requirements: []
|
89
82
|
|
90
83
|
rubyforge_project:
|
91
|
-
|
84
|
+
rubygems_version: 1.3.5
|
85
|
+
signing_key:
|
86
|
+
specification_version: 3
|
87
|
+
summary: Moonstone Agile Search Framework
|
88
|
+
test_files: []
|
89
|
+
|