moonstone 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|