java_bin 0.1.2 → 0.2.0
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/.gitignore +1 -0
- data/README.rdoc +75 -10
- data/Rakefile +3 -3
- data/VERSION +1 -1
- data/ext/java_bin/ext/parser.c +4 -0
- data/ext/java_bin/ext/parser.h +1 -2
- data/fixtures/javabin2.dat +0 -0
- data/fixtures/json2.dat +300 -0
- data/fixtures/ruby2.dat +301 -0
- data/java_bin.gemspec +12 -9
- data/lib/java_bin.rb +5 -0
- data/lib/rsolr_support.rb +24 -0
- data/lib/solr_ruby_support.rb +93 -0
- data/test/test_java_bin_parser.rb +19 -2
- metadata +10 -7
- data/TODO +0 -13
data/.gitignore
CHANGED
data/README.rdoc
CHANGED
|
@@ -1,6 +1,80 @@
|
|
|
1
1
|
= java_bin
|
|
2
2
|
|
|
3
|
-
This is a Solr JavaBin format implementation for Ruby.
|
|
3
|
+
This is a Apache Solr JavaBin format (binary format) implementation for Ruby.
|
|
4
|
+
|
|
5
|
+
== Features
|
|
6
|
+
|
|
7
|
+
* fast parse, and less network traffic.
|
|
8
|
+
MRI 1.8.7
|
|
9
|
+
[data1]
|
|
10
|
+
ruby eval parse. 5000 times. elapsed time 1.31124
|
|
11
|
+
javabin parse. 5000 times. elapsed time 0.514837
|
|
12
|
+
2.54690319460334 times
|
|
13
|
+
|
|
14
|
+
[data2]
|
|
15
|
+
ruby2 eval parse. 5000 times. elapsed time 6.604737
|
|
16
|
+
javabin2 parse. 5000 times. elapsed time 2.411031
|
|
17
|
+
2.73938286152273 times
|
|
18
|
+
|
|
19
|
+
YARV 1.9.2
|
|
20
|
+
[data1]
|
|
21
|
+
ruby eval parse. 5000 times. elapsed time 1.35476947
|
|
22
|
+
javabin parse. 5000 times. elapsed time 0.370740373
|
|
23
|
+
3.654226970311647 times
|
|
24
|
+
|
|
25
|
+
[data2]
|
|
26
|
+
ruby2 eval parse. 5000 times. elapsed time 6.555066861
|
|
27
|
+
javabin2 parse. 5000 times. elapsed time 1.752366331
|
|
28
|
+
3.7406943656919647 times
|
|
29
|
+
|
|
30
|
+
* rsolr/solr-ruby support.
|
|
31
|
+
* pure and c extension code.
|
|
32
|
+
* ruby 1.8/1.9 support.
|
|
33
|
+
|
|
34
|
+
== Requirements
|
|
35
|
+
|
|
36
|
+
* Ruby1.8.7 or later (include 1.9.x)
|
|
37
|
+
* (recommended) C compiler: you can alos use java_bin without c extension, but 'pure' is 30 times slower than 'ext'.
|
|
38
|
+
* JavaBin has been tested with MRI 1.8.7, REE 1.8.7, YARV 1.9.2 pre1 on Ubuntu Linux 9.10 (32bit), and Apache Solr 1.4
|
|
39
|
+
|
|
40
|
+
== Install
|
|
41
|
+
|
|
42
|
+
gem sources -a http://gemcutter.org
|
|
43
|
+
gem install java_bin
|
|
44
|
+
|
|
45
|
+
== Simple Usage
|
|
46
|
+
|
|
47
|
+
require 'rubygems'
|
|
48
|
+
require 'java_bin'
|
|
49
|
+
|
|
50
|
+
@parser = JavaBin.parser.new
|
|
51
|
+
result = @parser.parse( java bin format string )
|
|
52
|
+
|
|
53
|
+
=== With RSolr/Solr-Ruby
|
|
54
|
+
|
|
55
|
+
* By RSolr/Solr-Ruby support, a parser automatically uses javabin format instead of ruby format.
|
|
56
|
+
|
|
57
|
+
require 'rubygems'
|
|
58
|
+
require 'rsolr'
|
|
59
|
+
require 'java_bin'
|
|
60
|
+
|
|
61
|
+
solr = RSolr.connect
|
|
62
|
+
solr.select :q => '*:*'
|
|
63
|
+
|
|
64
|
+
== TODO
|
|
65
|
+
|
|
66
|
+
* more parse speed
|
|
67
|
+
* license
|
|
68
|
+
* windows build
|
|
69
|
+
* builder(writer)作成
|
|
70
|
+
* JRuby support
|
|
71
|
+
|
|
72
|
+
== References
|
|
73
|
+
|
|
74
|
+
* javabin http://wiki.apache.org/solr/javabin
|
|
75
|
+
* javabin codec (for java) http://svn.apache.org/viewvc/lucene/solr/trunk/src/common/org/apache/solr/common/util/JavaBinCodec.java?view=markup
|
|
76
|
+
* rsolr http://github.com/mwmitchell/rsolr/
|
|
77
|
+
* solr-ruby http://wiki.apache.org/solr/solr-ruby
|
|
4
78
|
|
|
5
79
|
== Note on Patches/Pull Requests
|
|
6
80
|
|
|
@@ -12,15 +86,6 @@ This is a Solr JavaBin format implementation for Ruby.
|
|
|
12
86
|
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
|
13
87
|
* Send me a pull request. Bonus points for topic branches.
|
|
14
88
|
|
|
15
|
-
== Install
|
|
16
|
-
|
|
17
|
-
gem install java_bin
|
|
18
|
-
|
|
19
|
-
== References
|
|
20
|
-
|
|
21
|
-
* http://wiki.apache.org/solr/javabin
|
|
22
|
-
* http://svn.apache.org/viewvc/lucene/solr/trunk/src/common/org/apache/solr/common/util/JavaBinCodec.java?view=markup
|
|
23
|
-
|
|
24
89
|
== Author
|
|
25
90
|
|
|
26
91
|
Toshinori Kajihara <mailto:kennyj@gmail.com>
|
data/Rakefile
CHANGED
|
@@ -5,8 +5,8 @@ begin
|
|
|
5
5
|
require 'jeweler'
|
|
6
6
|
Jeweler::Tasks.new do |gem|
|
|
7
7
|
gem.name = "java_bin"
|
|
8
|
-
gem.summary = %Q{Solr JavaBin format implementation for Ruby.}
|
|
9
|
-
gem.description = %Q{Solr JavaBin format implementation for Ruby.}
|
|
8
|
+
gem.summary = %Q{Apache Solr JavaBin format implementation for Ruby.}
|
|
9
|
+
gem.description = %Q{Apache Solr JavaBin format (binary format) implementation for Ruby.}
|
|
10
10
|
gem.email = "kennyj@gmail.com"
|
|
11
11
|
gem.homepage = "http://github.com/kennyj/java_bin"
|
|
12
12
|
gem.authors = ["kennyj"]
|
|
@@ -20,7 +20,7 @@ end
|
|
|
20
20
|
|
|
21
21
|
require 'rake/testtask'
|
|
22
22
|
Rake::TestTask.new(:test) do |test|
|
|
23
|
-
test.libs << '
|
|
23
|
+
test.libs << 'test' << 'ext'
|
|
24
24
|
test.pattern = 'test/**/test_*.rb'
|
|
25
25
|
test.verbose = true
|
|
26
26
|
end
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.2.0
|
data/ext/java_bin/ext/parser.c
CHANGED
|
@@ -304,6 +304,10 @@ static VALUE rb_cParser_parse(VALUE self, VALUE data) {
|
|
|
304
304
|
Data_Get_Struct(self, JAVA_BIN_PARSER, ptr);
|
|
305
305
|
|
|
306
306
|
/* 引数処理 */
|
|
307
|
+
if (TYPE(data) != T_STRING) {
|
|
308
|
+
rb_raise(rb_eRuntimeError, "rb_cParser_parse - data is not String.");
|
|
309
|
+
}
|
|
310
|
+
|
|
307
311
|
SafeStringValue(data);
|
|
308
312
|
ptrData = RSTRING_PTR(data);
|
|
309
313
|
dataLen = RSTRING_LEN(data);
|
data/ext/java_bin/ext/parser.h
CHANGED
|
@@ -71,7 +71,7 @@ typedef struct _extern_string_info {
|
|
|
71
71
|
/*
|
|
72
72
|
* 読込処理データ保持構造体
|
|
73
73
|
*/
|
|
74
|
-
typedef struct
|
|
74
|
+
typedef struct java_bin_parser {
|
|
75
75
|
unsigned char* data;
|
|
76
76
|
int data_len;
|
|
77
77
|
int current;
|
|
@@ -83,7 +83,6 @@ typedef struct java_bin_reader {
|
|
|
83
83
|
int cache_index;
|
|
84
84
|
int last_string_offset;
|
|
85
85
|
int last_string_len;
|
|
86
|
-
|
|
87
86
|
} JAVA_BIN_PARSER;
|
|
88
87
|
|
|
89
88
|
#ifdef HAVE_RUBY_ENCODING_H
|
|
Binary file
|
data/fixtures/json2.dat
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
{
|
|
2
|
+
"responseHeader":{
|
|
3
|
+
"status":0,
|
|
4
|
+
"QTime":0,
|
|
5
|
+
"params":{
|
|
6
|
+
"indent":"on",
|
|
7
|
+
"start":"0",
|
|
8
|
+
"q":"*:*\r\n",
|
|
9
|
+
"wt":"json",
|
|
10
|
+
"version":"2.2",
|
|
11
|
+
"rows":"100"}},
|
|
12
|
+
"response":{"numFound":19,"start":0,"docs":[
|
|
13
|
+
{
|
|
14
|
+
"id":"SP2514N",
|
|
15
|
+
"name":"Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133",
|
|
16
|
+
"manu":"Samsung Electronics Co. Ltd.",
|
|
17
|
+
"price":92.0,
|
|
18
|
+
"popularity":6,
|
|
19
|
+
"inStock":true,
|
|
20
|
+
"manufacturedate_dt":"2006-02-13T15:26:37Z",
|
|
21
|
+
"cat":[
|
|
22
|
+
"electronics",
|
|
23
|
+
"hard drive"],
|
|
24
|
+
"features":[
|
|
25
|
+
"7200RPM, 8MB cache, IDE Ultra ATA-133",
|
|
26
|
+
"NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor"]},
|
|
27
|
+
{
|
|
28
|
+
"id":"6H500F0",
|
|
29
|
+
"name":"Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300",
|
|
30
|
+
"manu":"Maxtor Corp.",
|
|
31
|
+
"price":350.0,
|
|
32
|
+
"popularity":6,
|
|
33
|
+
"inStock":true,
|
|
34
|
+
"manufacturedate_dt":"2006-02-13T15:26:37Z",
|
|
35
|
+
"cat":[
|
|
36
|
+
"electronics",
|
|
37
|
+
"hard drive"],
|
|
38
|
+
"features":[
|
|
39
|
+
"SATA 3.0Gb/s, NCQ",
|
|
40
|
+
"8.5ms seek",
|
|
41
|
+
"16MB cache"]},
|
|
42
|
+
{
|
|
43
|
+
"id":"F8V7067-APL-KIT",
|
|
44
|
+
"name":"Belkin Mobile Power Cord for iPod w/ Dock",
|
|
45
|
+
"manu":"Belkin",
|
|
46
|
+
"weight":4.0,
|
|
47
|
+
"price":19.95,
|
|
48
|
+
"popularity":1,
|
|
49
|
+
"inStock":false,
|
|
50
|
+
"manufacturedate_dt":"2005-08-01T16:30:25Z",
|
|
51
|
+
"cat":[
|
|
52
|
+
"electronics",
|
|
53
|
+
"connector"],
|
|
54
|
+
"features":[
|
|
55
|
+
"car power adapter, white"]},
|
|
56
|
+
{
|
|
57
|
+
"id":"IW-02",
|
|
58
|
+
"name":"iPod & iPod Mini USB 2.0 Cable",
|
|
59
|
+
"manu":"Belkin",
|
|
60
|
+
"weight":2.0,
|
|
61
|
+
"price":11.5,
|
|
62
|
+
"popularity":1,
|
|
63
|
+
"inStock":false,
|
|
64
|
+
"manufacturedate_dt":"2006-02-14T23:55:59Z",
|
|
65
|
+
"cat":[
|
|
66
|
+
"electronics",
|
|
67
|
+
"connector"],
|
|
68
|
+
"features":[
|
|
69
|
+
"car power adapter for iPod, white"]},
|
|
70
|
+
{
|
|
71
|
+
"id":"MA147LL/A",
|
|
72
|
+
"name":"Apple 60 GB iPod with Video Playback Black",
|
|
73
|
+
"manu":"Apple Computer Inc.",
|
|
74
|
+
"includes":"earbud headphones, USB cable",
|
|
75
|
+
"weight":5.5,
|
|
76
|
+
"price":399.0,
|
|
77
|
+
"popularity":10,
|
|
78
|
+
"inStock":true,
|
|
79
|
+
"manufacturedate_dt":"2005-10-12T08:00:00Z",
|
|
80
|
+
"cat":[
|
|
81
|
+
"electronics",
|
|
82
|
+
"music"],
|
|
83
|
+
"features":[
|
|
84
|
+
"iTunes, Podcasts, Audiobooks",
|
|
85
|
+
"Stores up to 15,000 songs, 25,000 photos, or 150 hours of video",
|
|
86
|
+
"2.5-inch, 320x240 color TFT LCD display with LED backlight",
|
|
87
|
+
"Up to 20 hours of battery life",
|
|
88
|
+
"Plays AAC, MP3, WAV, AIFF, Audible, Apple Lossless, H.264 video",
|
|
89
|
+
"Notes, Calendar, Phone book, Hold button, Date display, Photo wallet, Built-in games, JPEG photo playback, Upgradeable firmware, USB 2.0 compatibility, Playback speed control, Rechargeable capability, Battery level indication"]},
|
|
90
|
+
{
|
|
91
|
+
"id":"TWINX2048-3200PRO",
|
|
92
|
+
"name":"CORSAIR XMS 2GB (2 x 1GB) 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail",
|
|
93
|
+
"manu":"Corsair Microsystems Inc.",
|
|
94
|
+
"price":185.0,
|
|
95
|
+
"popularity":5,
|
|
96
|
+
"inStock":true,
|
|
97
|
+
"manufacturedate_dt":"2006-02-13T15:26:37Z",
|
|
98
|
+
"cat":[
|
|
99
|
+
"electronics",
|
|
100
|
+
"memory"],
|
|
101
|
+
"features":[
|
|
102
|
+
"CAS latency 2,\t2-3-3-6 timing, 2.75v, unbuffered, heat-spreader"]},
|
|
103
|
+
{
|
|
104
|
+
"id":"VS1GB400C3",
|
|
105
|
+
"name":"CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - Retail",
|
|
106
|
+
"manu":"Corsair Microsystems Inc.",
|
|
107
|
+
"price":74.99,
|
|
108
|
+
"popularity":7,
|
|
109
|
+
"inStock":true,
|
|
110
|
+
"manufacturedate_dt":"2006-02-13T15:26:37Z",
|
|
111
|
+
"cat":[
|
|
112
|
+
"electronics",
|
|
113
|
+
"memory"]},
|
|
114
|
+
{
|
|
115
|
+
"id":"VDBDB1A16",
|
|
116
|
+
"name":"A-DATA V-Series 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - OEM",
|
|
117
|
+
"manu":"A-DATA Technology Inc.",
|
|
118
|
+
"popularity":0,
|
|
119
|
+
"inStock":true,
|
|
120
|
+
"manufacturedate_dt":"2006-02-13T15:26:37Z",
|
|
121
|
+
"cat":[
|
|
122
|
+
"electronics",
|
|
123
|
+
"memory"],
|
|
124
|
+
"features":[
|
|
125
|
+
"CAS latency 3,\t 2.7v"]},
|
|
126
|
+
{
|
|
127
|
+
"id":"3007WFP",
|
|
128
|
+
"name":"Dell Widescreen UltraSharp 3007WFP",
|
|
129
|
+
"manu":"Dell, Inc.",
|
|
130
|
+
"includes":"USB cable",
|
|
131
|
+
"weight":401.6,
|
|
132
|
+
"price":2199.0,
|
|
133
|
+
"popularity":6,
|
|
134
|
+
"inStock":true,
|
|
135
|
+
"cat":[
|
|
136
|
+
"electronics",
|
|
137
|
+
"monitor"],
|
|
138
|
+
"features":[
|
|
139
|
+
"30\" TFT active matrix LCD, 2560 x 1600, .25mm dot pitch, 700:1 contrast"]},
|
|
140
|
+
{
|
|
141
|
+
"id":"VA902B",
|
|
142
|
+
"name":"ViewSonic VA902B - flat panel display - TFT - 19\"",
|
|
143
|
+
"manu":"ViewSonic Corp.",
|
|
144
|
+
"weight":190.4,
|
|
145
|
+
"price":279.95,
|
|
146
|
+
"popularity":6,
|
|
147
|
+
"inStock":true,
|
|
148
|
+
"cat":[
|
|
149
|
+
"electronics",
|
|
150
|
+
"monitor"],
|
|
151
|
+
"features":[
|
|
152
|
+
"19\" TFT active matrix LCD, 8ms response time, 1280 x 1024 native resolution"]},
|
|
153
|
+
{
|
|
154
|
+
"id":"0579B002",
|
|
155
|
+
"name":"Canon PIXMA MP500 All-In-One Photo Printer",
|
|
156
|
+
"manu":"Canon Inc.",
|
|
157
|
+
"weight":352.0,
|
|
158
|
+
"price":179.99,
|
|
159
|
+
"popularity":6,
|
|
160
|
+
"inStock":true,
|
|
161
|
+
"cat":[
|
|
162
|
+
"electronics",
|
|
163
|
+
"multifunction printer",
|
|
164
|
+
"printer",
|
|
165
|
+
"scanner",
|
|
166
|
+
"copier"],
|
|
167
|
+
"features":[
|
|
168
|
+
"Multifunction ink-jet color photo printer",
|
|
169
|
+
"Flatbed scanner, optical scan resolution of 1,200 x 2,400 dpi",
|
|
170
|
+
"2.5\" color LCD preview screen",
|
|
171
|
+
"Duplex Copying",
|
|
172
|
+
"Printing speed up to 29ppm black, 19ppm color",
|
|
173
|
+
"Hi-Speed USB",
|
|
174
|
+
"memory card: CompactFlash, Micro Drive, SmartMedia, Memory Stick, Memory Stick Pro, SD Card, and MultiMediaCard"]},
|
|
175
|
+
{
|
|
176
|
+
"id":"TWINX2048-3200PRO-payload",
|
|
177
|
+
"name":"CORSAIR XMS 2GB (2 x 1GB) 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail",
|
|
178
|
+
"manu":"Corsair Microsystems Inc.",
|
|
179
|
+
"price":185.0,
|
|
180
|
+
"popularity":5,
|
|
181
|
+
"inStock":true,
|
|
182
|
+
"payloads":"electronics|6.0 memory|3.0",
|
|
183
|
+
"cat":[
|
|
184
|
+
"electronics",
|
|
185
|
+
"memory"],
|
|
186
|
+
"features":[
|
|
187
|
+
"CAS latency 2,\t2-3-3-6 timing, 2.75v, unbuffered, heat-spreader"]},
|
|
188
|
+
{
|
|
189
|
+
"id":"VS1GB400C3-payload",
|
|
190
|
+
"name":"CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - Retail",
|
|
191
|
+
"manu":"Corsair Microsystems Inc.",
|
|
192
|
+
"price":74.99,
|
|
193
|
+
"popularity":7,
|
|
194
|
+
"inStock":true,
|
|
195
|
+
"payloads":"electronics|4.0 memory|2.0",
|
|
196
|
+
"cat":[
|
|
197
|
+
"electronics",
|
|
198
|
+
"memory"]},
|
|
199
|
+
{
|
|
200
|
+
"id":"VDBDB1A16-payload",
|
|
201
|
+
"name":"A-DATA V-Series 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - OEM",
|
|
202
|
+
"manu":"A-DATA Technology Inc.",
|
|
203
|
+
"popularity":5,
|
|
204
|
+
"inStock":true,
|
|
205
|
+
"payloads":"electronics|0.9 memory|0.1",
|
|
206
|
+
"cat":[
|
|
207
|
+
"electronics",
|
|
208
|
+
"memory"],
|
|
209
|
+
"features":[
|
|
210
|
+
"CAS latency 3,\t 2.7v"]},
|
|
211
|
+
{
|
|
212
|
+
"id":"9885A004",
|
|
213
|
+
"name":"Canon PowerShot SD500",
|
|
214
|
+
"manu":"Canon Inc.",
|
|
215
|
+
"includes":"32MB SD card, USB cable, AV cable, battery",
|
|
216
|
+
"weight":6.4,
|
|
217
|
+
"price":329.95,
|
|
218
|
+
"popularity":7,
|
|
219
|
+
"inStock":true,
|
|
220
|
+
"manufacturedate_dt":"2006-02-13T15:26:37Z",
|
|
221
|
+
"cat":[
|
|
222
|
+
"electronics",
|
|
223
|
+
"camera"],
|
|
224
|
+
"features":[
|
|
225
|
+
"3x zoop, 7.1 megapixel Digital ELPH",
|
|
226
|
+
"movie clips up to 640x480 @30 fps",
|
|
227
|
+
"2.0\" TFT LCD, 118,000 pixels",
|
|
228
|
+
"built in flash, red-eye reduction"]},
|
|
229
|
+
{
|
|
230
|
+
"id":"SOLR1000",
|
|
231
|
+
"name":"Solr, the Enterprise Search Server",
|
|
232
|
+
"manu":"Apache Software Foundation",
|
|
233
|
+
"price":0.0,
|
|
234
|
+
"popularity":10,
|
|
235
|
+
"inStock":true,
|
|
236
|
+
"incubationdate_dt":"2006-01-17T00:00:00Z",
|
|
237
|
+
"cat":[
|
|
238
|
+
"software",
|
|
239
|
+
"search"],
|
|
240
|
+
"features":[
|
|
241
|
+
"Advanced Full-Text Search Capabilities using Lucene",
|
|
242
|
+
"Optimized for High Volume Web Traffic",
|
|
243
|
+
"Standards Based Open Interfaces - XML and HTTP",
|
|
244
|
+
"Comprehensive HTML Administration Interfaces",
|
|
245
|
+
"Scalability - Efficient Replication to other Solr Search Servers",
|
|
246
|
+
"Flexible and Adaptable with XML configuration and Schema",
|
|
247
|
+
"Good unicode support: héllo (hello with an accent over the e)"]},
|
|
248
|
+
{
|
|
249
|
+
"id":"UTF8TEST",
|
|
250
|
+
"name":"Test with some UTF-8 encoded characters",
|
|
251
|
+
"manu":"Apache Software Foundation",
|
|
252
|
+
"price":0.0,
|
|
253
|
+
"inStock":true,
|
|
254
|
+
"cat":[
|
|
255
|
+
"software",
|
|
256
|
+
"search"],
|
|
257
|
+
"features":[
|
|
258
|
+
"No accents here",
|
|
259
|
+
"This is an e acute: é",
|
|
260
|
+
"eaiou with circumflexes: êâîôû",
|
|
261
|
+
"eaiou with umlauts: ëäïöü",
|
|
262
|
+
"tag with escaped chars: <nicetag/>",
|
|
263
|
+
"escaped ampersand: Bonnie & Clyde"]},
|
|
264
|
+
{
|
|
265
|
+
"id":"EN7800GTX/2DHTV/256M",
|
|
266
|
+
"name":"ASUS Extreme N7800GTX/2DHTV (256 MB)",
|
|
267
|
+
"manu":"ASUS Computer Inc.",
|
|
268
|
+
"weight":16.0,
|
|
269
|
+
"price":479.95,
|
|
270
|
+
"popularity":7,
|
|
271
|
+
"inStock":false,
|
|
272
|
+
"manufacturedate_dt":"2006-02-13T00:00:00Z",
|
|
273
|
+
"cat":[
|
|
274
|
+
"electronics",
|
|
275
|
+
"graphics card"],
|
|
276
|
+
"features":[
|
|
277
|
+
"NVIDIA GeForce 7800 GTX GPU/VPU clocked at 486MHz",
|
|
278
|
+
"256MB GDDR3 Memory clocked at 1.35GHz",
|
|
279
|
+
"PCI Express x16",
|
|
280
|
+
"Dual DVI connectors, HDTV out, video input",
|
|
281
|
+
"OpenGL 2.0, DirectX 9.0"]},
|
|
282
|
+
{
|
|
283
|
+
"id":"100-435805",
|
|
284
|
+
"name":"ATI Radeon X1900 XTX 512 MB PCIE Video Card",
|
|
285
|
+
"manu":"ATI Technologies",
|
|
286
|
+
"weight":48.0,
|
|
287
|
+
"price":649.99,
|
|
288
|
+
"popularity":7,
|
|
289
|
+
"inStock":false,
|
|
290
|
+
"manufacturedate_dt":"2006-02-13T00:00:00Z",
|
|
291
|
+
"cat":[
|
|
292
|
+
"electronics",
|
|
293
|
+
"graphics card"],
|
|
294
|
+
"features":[
|
|
295
|
+
"ATI RADEON X1900 GPU/VPU clocked at 650MHz",
|
|
296
|
+
"512MB GDDR3 SDRAM clocked at 1.55GHz",
|
|
297
|
+
"PCI Express x16",
|
|
298
|
+
"dual DVI, HDTV, svideo, composite out",
|
|
299
|
+
"OpenGL 2.0, DirectX 9.0"]}]
|
|
300
|
+
}}
|
data/fixtures/ruby2.dat
ADDED
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
{
|
|
2
|
+
'responseHeader'=>{
|
|
3
|
+
'status'=>0,
|
|
4
|
+
'QTime'=>1,
|
|
5
|
+
'params'=>{
|
|
6
|
+
'indent'=>'on',
|
|
7
|
+
'start'=>'0',
|
|
8
|
+
'q'=>'*:*
|
|
9
|
+
',
|
|
10
|
+
'wt'=>'ruby',
|
|
11
|
+
'version'=>'2.2',
|
|
12
|
+
'rows'=>'100'}},
|
|
13
|
+
'response'=>{'numFound'=>19,'start'=>0,'docs'=>[
|
|
14
|
+
{
|
|
15
|
+
'id'=>'SP2514N',
|
|
16
|
+
'name'=>'Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133',
|
|
17
|
+
'manu'=>'Samsung Electronics Co. Ltd.',
|
|
18
|
+
'price'=>92.0,
|
|
19
|
+
'popularity'=>6,
|
|
20
|
+
'inStock'=>true,
|
|
21
|
+
'manufacturedate_dt'=>'2006-02-13T15:26:37Z',
|
|
22
|
+
'cat'=>[
|
|
23
|
+
'electronics',
|
|
24
|
+
'hard drive'],
|
|
25
|
+
'features'=>[
|
|
26
|
+
'7200RPM, 8MB cache, IDE Ultra ATA-133',
|
|
27
|
+
'NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor']},
|
|
28
|
+
{
|
|
29
|
+
'id'=>'6H500F0',
|
|
30
|
+
'name'=>'Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300',
|
|
31
|
+
'manu'=>'Maxtor Corp.',
|
|
32
|
+
'price'=>350.0,
|
|
33
|
+
'popularity'=>6,
|
|
34
|
+
'inStock'=>true,
|
|
35
|
+
'manufacturedate_dt'=>'2006-02-13T15:26:37Z',
|
|
36
|
+
'cat'=>[
|
|
37
|
+
'electronics',
|
|
38
|
+
'hard drive'],
|
|
39
|
+
'features'=>[
|
|
40
|
+
'SATA 3.0Gb/s, NCQ',
|
|
41
|
+
'8.5ms seek',
|
|
42
|
+
'16MB cache']},
|
|
43
|
+
{
|
|
44
|
+
'id'=>'F8V7067-APL-KIT',
|
|
45
|
+
'name'=>'Belkin Mobile Power Cord for iPod w/ Dock',
|
|
46
|
+
'manu'=>'Belkin',
|
|
47
|
+
'weight'=>4.0,
|
|
48
|
+
'price'=>19.95,
|
|
49
|
+
'popularity'=>1,
|
|
50
|
+
'inStock'=>false,
|
|
51
|
+
'manufacturedate_dt'=>'2005-08-01T16:30:25Z',
|
|
52
|
+
'cat'=>[
|
|
53
|
+
'electronics',
|
|
54
|
+
'connector'],
|
|
55
|
+
'features'=>[
|
|
56
|
+
'car power adapter, white']},
|
|
57
|
+
{
|
|
58
|
+
'id'=>'IW-02',
|
|
59
|
+
'name'=>'iPod & iPod Mini USB 2.0 Cable',
|
|
60
|
+
'manu'=>'Belkin',
|
|
61
|
+
'weight'=>2.0,
|
|
62
|
+
'price'=>11.5,
|
|
63
|
+
'popularity'=>1,
|
|
64
|
+
'inStock'=>false,
|
|
65
|
+
'manufacturedate_dt'=>'2006-02-14T23:55:59Z',
|
|
66
|
+
'cat'=>[
|
|
67
|
+
'electronics',
|
|
68
|
+
'connector'],
|
|
69
|
+
'features'=>[
|
|
70
|
+
'car power adapter for iPod, white']},
|
|
71
|
+
{
|
|
72
|
+
'id'=>'MA147LL/A',
|
|
73
|
+
'name'=>'Apple 60 GB iPod with Video Playback Black',
|
|
74
|
+
'manu'=>'Apple Computer Inc.',
|
|
75
|
+
'includes'=>'earbud headphones, USB cable',
|
|
76
|
+
'weight'=>5.5,
|
|
77
|
+
'price'=>399.0,
|
|
78
|
+
'popularity'=>10,
|
|
79
|
+
'inStock'=>true,
|
|
80
|
+
'manufacturedate_dt'=>'2005-10-12T08:00:00Z',
|
|
81
|
+
'cat'=>[
|
|
82
|
+
'electronics',
|
|
83
|
+
'music'],
|
|
84
|
+
'features'=>[
|
|
85
|
+
'iTunes, Podcasts, Audiobooks',
|
|
86
|
+
'Stores up to 15,000 songs, 25,000 photos, or 150 hours of video',
|
|
87
|
+
'2.5-inch, 320x240 color TFT LCD display with LED backlight',
|
|
88
|
+
'Up to 20 hours of battery life',
|
|
89
|
+
'Plays AAC, MP3, WAV, AIFF, Audible, Apple Lossless, H.264 video',
|
|
90
|
+
'Notes, Calendar, Phone book, Hold button, Date display, Photo wallet, Built-in games, JPEG photo playback, Upgradeable firmware, USB 2.0 compatibility, Playback speed control, Rechargeable capability, Battery level indication']},
|
|
91
|
+
{
|
|
92
|
+
'id'=>'TWINX2048-3200PRO',
|
|
93
|
+
'name'=>'CORSAIR XMS 2GB (2 x 1GB) 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail',
|
|
94
|
+
'manu'=>'Corsair Microsystems Inc.',
|
|
95
|
+
'price'=>185.0,
|
|
96
|
+
'popularity'=>5,
|
|
97
|
+
'inStock'=>true,
|
|
98
|
+
'manufacturedate_dt'=>'2006-02-13T15:26:37Z',
|
|
99
|
+
'cat'=>[
|
|
100
|
+
'electronics',
|
|
101
|
+
'memory'],
|
|
102
|
+
'features'=>[
|
|
103
|
+
'CAS latency 2, 2-3-3-6 timing, 2.75v, unbuffered, heat-spreader']},
|
|
104
|
+
{
|
|
105
|
+
'id'=>'VS1GB400C3',
|
|
106
|
+
'name'=>'CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - Retail',
|
|
107
|
+
'manu'=>'Corsair Microsystems Inc.',
|
|
108
|
+
'price'=>74.99,
|
|
109
|
+
'popularity'=>7,
|
|
110
|
+
'inStock'=>true,
|
|
111
|
+
'manufacturedate_dt'=>'2006-02-13T15:26:37Z',
|
|
112
|
+
'cat'=>[
|
|
113
|
+
'electronics',
|
|
114
|
+
'memory']},
|
|
115
|
+
{
|
|
116
|
+
'id'=>'VDBDB1A16',
|
|
117
|
+
'name'=>'A-DATA V-Series 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - OEM',
|
|
118
|
+
'manu'=>'A-DATA Technology Inc.',
|
|
119
|
+
'popularity'=>0,
|
|
120
|
+
'inStock'=>true,
|
|
121
|
+
'manufacturedate_dt'=>'2006-02-13T15:26:37Z',
|
|
122
|
+
'cat'=>[
|
|
123
|
+
'electronics',
|
|
124
|
+
'memory'],
|
|
125
|
+
'features'=>[
|
|
126
|
+
'CAS latency 3, 2.7v']},
|
|
127
|
+
{
|
|
128
|
+
'id'=>'3007WFP',
|
|
129
|
+
'name'=>'Dell Widescreen UltraSharp 3007WFP',
|
|
130
|
+
'manu'=>'Dell, Inc.',
|
|
131
|
+
'includes'=>'USB cable',
|
|
132
|
+
'weight'=>401.6,
|
|
133
|
+
'price'=>2199.0,
|
|
134
|
+
'popularity'=>6,
|
|
135
|
+
'inStock'=>true,
|
|
136
|
+
'cat'=>[
|
|
137
|
+
'electronics',
|
|
138
|
+
'monitor'],
|
|
139
|
+
'features'=>[
|
|
140
|
+
'30" TFT active matrix LCD, 2560 x 1600, .25mm dot pitch, 700:1 contrast']},
|
|
141
|
+
{
|
|
142
|
+
'id'=>'VA902B',
|
|
143
|
+
'name'=>'ViewSonic VA902B - flat panel display - TFT - 19"',
|
|
144
|
+
'manu'=>'ViewSonic Corp.',
|
|
145
|
+
'weight'=>190.4,
|
|
146
|
+
'price'=>279.95,
|
|
147
|
+
'popularity'=>6,
|
|
148
|
+
'inStock'=>true,
|
|
149
|
+
'cat'=>[
|
|
150
|
+
'electronics',
|
|
151
|
+
'monitor'],
|
|
152
|
+
'features'=>[
|
|
153
|
+
'19" TFT active matrix LCD, 8ms response time, 1280 x 1024 native resolution']},
|
|
154
|
+
{
|
|
155
|
+
'id'=>'0579B002',
|
|
156
|
+
'name'=>'Canon PIXMA MP500 All-In-One Photo Printer',
|
|
157
|
+
'manu'=>'Canon Inc.',
|
|
158
|
+
'weight'=>352.0,
|
|
159
|
+
'price'=>179.99,
|
|
160
|
+
'popularity'=>6,
|
|
161
|
+
'inStock'=>true,
|
|
162
|
+
'cat'=>[
|
|
163
|
+
'electronics',
|
|
164
|
+
'multifunction printer',
|
|
165
|
+
'printer',
|
|
166
|
+
'scanner',
|
|
167
|
+
'copier'],
|
|
168
|
+
'features'=>[
|
|
169
|
+
'Multifunction ink-jet color photo printer',
|
|
170
|
+
'Flatbed scanner, optical scan resolution of 1,200 x 2,400 dpi',
|
|
171
|
+
'2.5" color LCD preview screen',
|
|
172
|
+
'Duplex Copying',
|
|
173
|
+
'Printing speed up to 29ppm black, 19ppm color',
|
|
174
|
+
'Hi-Speed USB',
|
|
175
|
+
'memory card: CompactFlash, Micro Drive, SmartMedia, Memory Stick, Memory Stick Pro, SD Card, and MultiMediaCard']},
|
|
176
|
+
{
|
|
177
|
+
'id'=>'TWINX2048-3200PRO-payload',
|
|
178
|
+
'name'=>'CORSAIR XMS 2GB (2 x 1GB) 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail',
|
|
179
|
+
'manu'=>'Corsair Microsystems Inc.',
|
|
180
|
+
'price'=>185.0,
|
|
181
|
+
'popularity'=>5,
|
|
182
|
+
'inStock'=>true,
|
|
183
|
+
'payloads'=>'electronics|6.0 memory|3.0',
|
|
184
|
+
'cat'=>[
|
|
185
|
+
'electronics',
|
|
186
|
+
'memory'],
|
|
187
|
+
'features'=>[
|
|
188
|
+
'CAS latency 2, 2-3-3-6 timing, 2.75v, unbuffered, heat-spreader']},
|
|
189
|
+
{
|
|
190
|
+
'id'=>'VS1GB400C3-payload',
|
|
191
|
+
'name'=>'CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - Retail',
|
|
192
|
+
'manu'=>'Corsair Microsystems Inc.',
|
|
193
|
+
'price'=>74.99,
|
|
194
|
+
'popularity'=>7,
|
|
195
|
+
'inStock'=>true,
|
|
196
|
+
'payloads'=>'electronics|4.0 memory|2.0',
|
|
197
|
+
'cat'=>[
|
|
198
|
+
'electronics',
|
|
199
|
+
'memory']},
|
|
200
|
+
{
|
|
201
|
+
'id'=>'VDBDB1A16-payload',
|
|
202
|
+
'name'=>'A-DATA V-Series 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - OEM',
|
|
203
|
+
'manu'=>'A-DATA Technology Inc.',
|
|
204
|
+
'popularity'=>5,
|
|
205
|
+
'inStock'=>true,
|
|
206
|
+
'payloads'=>'electronics|0.9 memory|0.1',
|
|
207
|
+
'cat'=>[
|
|
208
|
+
'electronics',
|
|
209
|
+
'memory'],
|
|
210
|
+
'features'=>[
|
|
211
|
+
'CAS latency 3, 2.7v']},
|
|
212
|
+
{
|
|
213
|
+
'id'=>'9885A004',
|
|
214
|
+
'name'=>'Canon PowerShot SD500',
|
|
215
|
+
'manu'=>'Canon Inc.',
|
|
216
|
+
'includes'=>'32MB SD card, USB cable, AV cable, battery',
|
|
217
|
+
'weight'=>6.4,
|
|
218
|
+
'price'=>329.95,
|
|
219
|
+
'popularity'=>7,
|
|
220
|
+
'inStock'=>true,
|
|
221
|
+
'manufacturedate_dt'=>'2006-02-13T15:26:37Z',
|
|
222
|
+
'cat'=>[
|
|
223
|
+
'electronics',
|
|
224
|
+
'camera'],
|
|
225
|
+
'features'=>[
|
|
226
|
+
'3x zoop, 7.1 megapixel Digital ELPH',
|
|
227
|
+
'movie clips up to 640x480 @30 fps',
|
|
228
|
+
'2.0" TFT LCD, 118,000 pixels',
|
|
229
|
+
'built in flash, red-eye reduction']},
|
|
230
|
+
{
|
|
231
|
+
'id'=>'SOLR1000',
|
|
232
|
+
'name'=>'Solr, the Enterprise Search Server',
|
|
233
|
+
'manu'=>'Apache Software Foundation',
|
|
234
|
+
'price'=>0.0,
|
|
235
|
+
'popularity'=>10,
|
|
236
|
+
'inStock'=>true,
|
|
237
|
+
'incubationdate_dt'=>'2006-01-17T00:00:00Z',
|
|
238
|
+
'cat'=>[
|
|
239
|
+
'software',
|
|
240
|
+
'search'],
|
|
241
|
+
'features'=>[
|
|
242
|
+
'Advanced Full-Text Search Capabilities using Lucene',
|
|
243
|
+
'Optimized for High Volume Web Traffic',
|
|
244
|
+
'Standards Based Open Interfaces - XML and HTTP',
|
|
245
|
+
'Comprehensive HTML Administration Interfaces',
|
|
246
|
+
'Scalability - Efficient Replication to other Solr Search Servers',
|
|
247
|
+
'Flexible and Adaptable with XML configuration and Schema',
|
|
248
|
+
'Good unicode support: héllo (hello with an accent over the e)']},
|
|
249
|
+
{
|
|
250
|
+
'id'=>'UTF8TEST',
|
|
251
|
+
'name'=>'Test with some UTF-8 encoded characters',
|
|
252
|
+
'manu'=>'Apache Software Foundation',
|
|
253
|
+
'price'=>0.0,
|
|
254
|
+
'inStock'=>true,
|
|
255
|
+
'cat'=>[
|
|
256
|
+
'software',
|
|
257
|
+
'search'],
|
|
258
|
+
'features'=>[
|
|
259
|
+
'No accents here',
|
|
260
|
+
'This is an e acute: é',
|
|
261
|
+
'eaiou with circumflexes: êâîôû',
|
|
262
|
+
'eaiou with umlauts: ëäïöü',
|
|
263
|
+
'tag with escaped chars: <nicetag/>',
|
|
264
|
+
'escaped ampersand: Bonnie & Clyde']},
|
|
265
|
+
{
|
|
266
|
+
'id'=>'EN7800GTX/2DHTV/256M',
|
|
267
|
+
'name'=>'ASUS Extreme N7800GTX/2DHTV (256 MB)',
|
|
268
|
+
'manu'=>'ASUS Computer Inc.',
|
|
269
|
+
'weight'=>16.0,
|
|
270
|
+
'price'=>479.95,
|
|
271
|
+
'popularity'=>7,
|
|
272
|
+
'inStock'=>false,
|
|
273
|
+
'manufacturedate_dt'=>'2006-02-13T00:00:00Z',
|
|
274
|
+
'cat'=>[
|
|
275
|
+
'electronics',
|
|
276
|
+
'graphics card'],
|
|
277
|
+
'features'=>[
|
|
278
|
+
'NVIDIA GeForce 7800 GTX GPU/VPU clocked at 486MHz',
|
|
279
|
+
'256MB GDDR3 Memory clocked at 1.35GHz',
|
|
280
|
+
'PCI Express x16',
|
|
281
|
+
'Dual DVI connectors, HDTV out, video input',
|
|
282
|
+
'OpenGL 2.0, DirectX 9.0']},
|
|
283
|
+
{
|
|
284
|
+
'id'=>'100-435805',
|
|
285
|
+
'name'=>'ATI Radeon X1900 XTX 512 MB PCIE Video Card',
|
|
286
|
+
'manu'=>'ATI Technologies',
|
|
287
|
+
'weight'=>48.0,
|
|
288
|
+
'price'=>649.99,
|
|
289
|
+
'popularity'=>7,
|
|
290
|
+
'inStock'=>false,
|
|
291
|
+
'manufacturedate_dt'=>'2006-02-13T00:00:00Z',
|
|
292
|
+
'cat'=>[
|
|
293
|
+
'electronics',
|
|
294
|
+
'graphics card'],
|
|
295
|
+
'features'=>[
|
|
296
|
+
'ATI RADEON X1900 GPU/VPU clocked at 650MHz',
|
|
297
|
+
'512MB GDDR3 SDRAM clocked at 1.55GHz',
|
|
298
|
+
'PCI Express x16',
|
|
299
|
+
'dual DVI, HDTV, svideo, composite out',
|
|
300
|
+
'OpenGL 2.0, DirectX 9.0']}]
|
|
301
|
+
}}
|
data/java_bin.gemspec
CHANGED
|
@@ -5,18 +5,17 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{java_bin}
|
|
8
|
-
s.version = "0.
|
|
8
|
+
s.version = "0.2.0"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["kennyj"]
|
|
12
|
-
s.date = %q{2010-01-
|
|
13
|
-
s.description = %q{Solr JavaBin format implementation for Ruby.}
|
|
12
|
+
s.date = %q{2010-01-14}
|
|
13
|
+
s.description = %q{Apache Solr JavaBin format (binary format) implementation for Ruby.}
|
|
14
14
|
s.email = %q{kennyj@gmail.com}
|
|
15
15
|
s.extensions = ["ext/java_bin/ext/extconf.rb"]
|
|
16
16
|
s.extra_rdoc_files = [
|
|
17
17
|
"LICENSE",
|
|
18
|
-
"README.rdoc"
|
|
19
|
-
"TODO"
|
|
18
|
+
"README.rdoc"
|
|
20
19
|
]
|
|
21
20
|
s.files = [
|
|
22
21
|
".document",
|
|
@@ -25,14 +24,16 @@ Gem::Specification.new do |s|
|
|
|
25
24
|
"LICENSE",
|
|
26
25
|
"README.rdoc",
|
|
27
26
|
"Rakefile",
|
|
28
|
-
"TODO",
|
|
29
27
|
"VERSION",
|
|
30
28
|
"ext/java_bin/ext/extconf.rb",
|
|
31
29
|
"ext/java_bin/ext/parser.c",
|
|
32
30
|
"ext/java_bin/ext/parser.h",
|
|
33
31
|
"fixtures/javabin.dat",
|
|
32
|
+
"fixtures/javabin2.dat",
|
|
34
33
|
"fixtures/json.dat",
|
|
34
|
+
"fixtures/json2.dat",
|
|
35
35
|
"fixtures/ruby.dat",
|
|
36
|
+
"fixtures/ruby2.dat",
|
|
36
37
|
"java_bin.gemspec",
|
|
37
38
|
"lib/java_bin.rb",
|
|
38
39
|
"lib/java_bin/ext.rb",
|
|
@@ -40,6 +41,8 @@ Gem::Specification.new do |s|
|
|
|
40
41
|
"lib/java_bin/pure.rb",
|
|
41
42
|
"lib/java_bin/pure/parser.rb",
|
|
42
43
|
"lib/java_bin/version.rb",
|
|
44
|
+
"lib/rsolr_support.rb",
|
|
45
|
+
"lib/solr_ruby_support.rb",
|
|
43
46
|
"test/helper.rb",
|
|
44
47
|
"test/test_java_bin_parser.rb",
|
|
45
48
|
"test/xxx_performance.rb"
|
|
@@ -48,10 +51,10 @@ Gem::Specification.new do |s|
|
|
|
48
51
|
s.rdoc_options = ["--charset=UTF-8"]
|
|
49
52
|
s.require_paths = ["lib", "ext"]
|
|
50
53
|
s.rubygems_version = %q{1.3.5}
|
|
51
|
-
s.summary = %q{Solr JavaBin format implementation for Ruby.}
|
|
54
|
+
s.summary = %q{Apache Solr JavaBin format implementation for Ruby.}
|
|
52
55
|
s.test_files = [
|
|
53
|
-
"test/
|
|
54
|
-
"test/
|
|
56
|
+
"test/test_java_bin_parser.rb",
|
|
57
|
+
"test/xxx_performance.rb",
|
|
55
58
|
"test/helper.rb"
|
|
56
59
|
]
|
|
57
60
|
|
data/lib/java_bin.rb
CHANGED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# RSolr support
|
|
2
|
+
|
|
3
|
+
if defined? RSolr::Client
|
|
4
|
+
|
|
5
|
+
class RSolr::Client
|
|
6
|
+
protected
|
|
7
|
+
|
|
8
|
+
def map_params(params)
|
|
9
|
+
params ||= {}
|
|
10
|
+
{:wt=>:javabin}.merge(params)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def adapt_response_with_java_bin(connection_response)
|
|
14
|
+
data = adapt_response_without_java_bin(connection_response)
|
|
15
|
+
data = JavaBin.parser.new.parse(data) if data.raw[:params][:wt] == :javabin
|
|
16
|
+
data
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
alias_method :adapt_response_without_java_bin, :adapt_response
|
|
20
|
+
alias_method :adapt_response, :adapt_response_with_java_bin
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Solr-Ruby support
|
|
2
|
+
|
|
3
|
+
# solr-ruby request class hierarchy
|
|
4
|
+
#
|
|
5
|
+
# base
|
|
6
|
+
# ping
|
|
7
|
+
# update
|
|
8
|
+
# add_document
|
|
9
|
+
# commit
|
|
10
|
+
# delete
|
|
11
|
+
# modify_document
|
|
12
|
+
# optimize
|
|
13
|
+
# select => :response_format, :to_hash
|
|
14
|
+
# index_info
|
|
15
|
+
# standard
|
|
16
|
+
# dismax
|
|
17
|
+
# spellcheck
|
|
18
|
+
#
|
|
19
|
+
# solr-ruby response class hierarchy
|
|
20
|
+
#
|
|
21
|
+
# base => :make_response
|
|
22
|
+
# xml
|
|
23
|
+
# add_document
|
|
24
|
+
# commit
|
|
25
|
+
# optimize
|
|
26
|
+
# delete
|
|
27
|
+
# modify_document
|
|
28
|
+
# ping
|
|
29
|
+
# ruby => :initialize
|
|
30
|
+
# index_info
|
|
31
|
+
# select
|
|
32
|
+
# spellcheck
|
|
33
|
+
# standard
|
|
34
|
+
# dismax
|
|
35
|
+
|
|
36
|
+
if defined? Solr::Request::Base
|
|
37
|
+
|
|
38
|
+
class Solr::Request::Select
|
|
39
|
+
def response_format
|
|
40
|
+
:javabin
|
|
41
|
+
end
|
|
42
|
+
def to_hash
|
|
43
|
+
return {:qt => query_type, :wt => 'javabin'}.merge(@select_params)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
class Solr::Response::Base
|
|
48
|
+
def self.make_response(request, raw)
|
|
49
|
+
|
|
50
|
+
# make sure response format seems sane
|
|
51
|
+
unless [:xml, :ruby, :javabin].include?(request.response_format)
|
|
52
|
+
raise Solr::Exception.new("unknown response format: #{request.response_format}" )
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# TODO: Factor out this case... perhaps the request object should provide the response class instead? Or dynamically align by class name?
|
|
56
|
+
# Maybe the request itself could have the response handling features that get mixed in with a single general purpose response object?
|
|
57
|
+
|
|
58
|
+
begin
|
|
59
|
+
klass = eval(request.class.name.sub(/Request/,'Response'))
|
|
60
|
+
rescue NameError
|
|
61
|
+
raise Solr::Exception.new("unknown request type: #{request.class}")
|
|
62
|
+
else
|
|
63
|
+
klass.new(raw)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# FIXME. I should create Solr::Response::JavaBin class,
|
|
71
|
+
# but response class hierarchy doesn't permit it ! (kennyj)
|
|
72
|
+
class Solr::Response::Ruby < Solr::Response::Base
|
|
73
|
+
def initialize(java_bin_data)
|
|
74
|
+
super
|
|
75
|
+
begin
|
|
76
|
+
#TODO: what about pulling up data/header/response to ResponseBase,
|
|
77
|
+
# or maybe a new middle class like SelectResponseBase since
|
|
78
|
+
# all Select queries return this same sort of stuff??
|
|
79
|
+
# XML (&wt=xml) and Ruby (&wt=ruby) responses contain exactly the same structure.
|
|
80
|
+
# a goal of solrb is to make it irrelevant which gets used under the hood,
|
|
81
|
+
# but favor Ruby responses.
|
|
82
|
+
@data = ::JavaBin.parser.new.parse(java_bin_data)
|
|
83
|
+
@header = @data['responseHeader']
|
|
84
|
+
raise "response should be a hash" unless @data.kind_of? Hash
|
|
85
|
+
raise "response header missing" unless @header.kind_of? Hash
|
|
86
|
+
rescue SyntaxError => e
|
|
87
|
+
raise Solr::Exception.new("invalid java bin data: #{e}")
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
|
|
@@ -66,14 +66,31 @@ class TestJavaBinParser < Test::Unit::TestCase
|
|
|
66
66
|
assert_equal result['response']['docs'][1]['score'], 0.5030758380889893
|
|
67
67
|
end
|
|
68
68
|
|
|
69
|
+
def test_javabin2_dat
|
|
70
|
+
result = @parser.parse(open("fixtures/javabin2.dat", "r:utf-8").read)
|
|
71
|
+
assert_equal 19, result['response']['docs'].size
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
|
|
69
75
|
TIMES = 5000
|
|
70
76
|
def test_javabin_parse_and_ruby_eval
|
|
71
|
-
jb = open("fixtures/javabin.dat", "r:utf-8").read
|
|
72
77
|
r = open("fixtures/ruby.dat", "r:utf-8").read
|
|
78
|
+
jb = open("fixtures/javabin.dat", "r:utf-8").read
|
|
73
79
|
puts ""
|
|
74
80
|
r_et = elapsed_time("ruby eval parse. ", TIMES) { eval(r) }
|
|
75
81
|
jb_et = elapsed_time("javabin parse. ", TIMES) { @parser.parse(jb) }
|
|
76
|
-
|
|
82
|
+
puts("#{r_et/jb_et} times")
|
|
83
|
+
assert (jb_et * 2.5) < r_et if @parser.is_a? JavaBin::Ext::Parser
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def test_javabin2_parse_and_ruby2_eval
|
|
87
|
+
r = open("fixtures/ruby2.dat", "r:utf-8").read
|
|
88
|
+
jb = open("fixtures/javabin2.dat", "r:utf-8").read
|
|
89
|
+
puts ""
|
|
90
|
+
r_et = elapsed_time("ruby2 eval parse. ", TIMES) { eval(r) }
|
|
91
|
+
jb_et = elapsed_time("javabin2 parse. ", TIMES) { @parser.parse(jb) }
|
|
92
|
+
puts("#{r_et/jb_et} times")
|
|
93
|
+
assert (jb_et * 2.5) < r_et if @parser.is_a? JavaBin::Ext::Parser
|
|
77
94
|
end
|
|
78
95
|
|
|
79
96
|
def test_memory_allocate
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: java_bin
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- kennyj
|
|
@@ -9,11 +9,11 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2010-01-
|
|
12
|
+
date: 2010-01-14 00:00:00 +09:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies: []
|
|
15
15
|
|
|
16
|
-
description: Solr JavaBin format implementation for Ruby.
|
|
16
|
+
description: Apache Solr JavaBin format (binary format) implementation for Ruby.
|
|
17
17
|
email: kennyj@gmail.com
|
|
18
18
|
executables: []
|
|
19
19
|
|
|
@@ -22,7 +22,6 @@ extensions:
|
|
|
22
22
|
extra_rdoc_files:
|
|
23
23
|
- LICENSE
|
|
24
24
|
- README.rdoc
|
|
25
|
-
- TODO
|
|
26
25
|
files:
|
|
27
26
|
- .document
|
|
28
27
|
- .gitignore
|
|
@@ -30,14 +29,16 @@ files:
|
|
|
30
29
|
- LICENSE
|
|
31
30
|
- README.rdoc
|
|
32
31
|
- Rakefile
|
|
33
|
-
- TODO
|
|
34
32
|
- VERSION
|
|
35
33
|
- ext/java_bin/ext/extconf.rb
|
|
36
34
|
- ext/java_bin/ext/parser.c
|
|
37
35
|
- ext/java_bin/ext/parser.h
|
|
38
36
|
- fixtures/javabin.dat
|
|
37
|
+
- fixtures/javabin2.dat
|
|
39
38
|
- fixtures/json.dat
|
|
39
|
+
- fixtures/json2.dat
|
|
40
40
|
- fixtures/ruby.dat
|
|
41
|
+
- fixtures/ruby2.dat
|
|
41
42
|
- java_bin.gemspec
|
|
42
43
|
- lib/java_bin.rb
|
|
43
44
|
- lib/java_bin/ext.rb
|
|
@@ -45,6 +46,8 @@ files:
|
|
|
45
46
|
- lib/java_bin/pure.rb
|
|
46
47
|
- lib/java_bin/pure/parser.rb
|
|
47
48
|
- lib/java_bin/version.rb
|
|
49
|
+
- lib/rsolr_support.rb
|
|
50
|
+
- lib/solr_ruby_support.rb
|
|
48
51
|
- test/helper.rb
|
|
49
52
|
- test/test_java_bin_parser.rb
|
|
50
53
|
- test/xxx_performance.rb
|
|
@@ -76,8 +79,8 @@ rubyforge_project:
|
|
|
76
79
|
rubygems_version: 1.3.5
|
|
77
80
|
signing_key:
|
|
78
81
|
specification_version: 3
|
|
79
|
-
summary: Solr JavaBin format implementation for Ruby.
|
|
82
|
+
summary: Apache Solr JavaBin format implementation for Ruby.
|
|
80
83
|
test_files:
|
|
81
|
-
- test/xxx_performance.rb
|
|
82
84
|
- test/test_java_bin_parser.rb
|
|
85
|
+
- test/xxx_performance.rb
|
|
83
86
|
- test/helper.rb
|
data/TODO
DELETED