sphinx 0.9.9.2117 → 0.9.10
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -3
- data/README.rdoc +18 -213
- data/Rakefile +15 -24
- data/VERSION.yml +1 -2
- data/install.rb +5 -0
- data/lib/sphinx/client.rb +893 -2089
- data/lib/sphinx/request.rb +11 -82
- data/lib/sphinx/response.rb +0 -2
- data/lib/sphinx.rb +5 -50
- data/spec/client_response_spec.rb +40 -33
- data/spec/client_spec.rb +471 -669
- data/spec/fixtures/ranking_sph04.php +9 -0
- data/spec/fixtures/sphinxapi.php +69 -54
- data/spec/sphinx/sphinx-id64.conf +1 -1
- data/spec/sphinx/sphinx.conf +1 -1
- data/spec/sphinx/sphinx_test.sql +2 -4
- data/sphinx.gemspec +8 -13
- data/sphinx.yml.tpl +3 -0
- data/tasks/sphinx.rake +75 -0
- metadata +6 -11
- data/lib/sphinx/buffered_io.rb +0 -26
- data/lib/sphinx/constants.rb +0 -179
- data/lib/sphinx/indifferent_access.rb +0 -152
- data/lib/sphinx/server.rb +0 -170
- data/lib/sphinx/timeout.rb +0 -31
- data/spec/client_validations_spec.rb +0 -859
- data/spec/spec_helper.rb +0 -24
data/spec/fixtures/sphinxapi.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
<?php
|
2
2
|
|
3
3
|
//
|
4
|
-
// $Id
|
4
|
+
// $Id$
|
5
5
|
//
|
6
6
|
|
7
7
|
//
|
@@ -18,21 +18,23 @@
|
|
18
18
|
/////////////////////////////////////////////////////////////////////////////
|
19
19
|
|
20
20
|
/// known searchd commands
|
21
|
-
define ( "SEARCHD_COMMAND_SEARCH",
|
22
|
-
define ( "SEARCHD_COMMAND_EXCERPT",
|
23
|
-
define ( "SEARCHD_COMMAND_UPDATE",
|
24
|
-
define ( "SEARCHD_COMMAND_KEYWORDS",3 );
|
25
|
-
define ( "SEARCHD_COMMAND_PERSIST",
|
26
|
-
define ( "SEARCHD_COMMAND_STATUS",
|
27
|
-
define ( "SEARCHD_COMMAND_QUERY",
|
21
|
+
define ( "SEARCHD_COMMAND_SEARCH", 0 );
|
22
|
+
define ( "SEARCHD_COMMAND_EXCERPT", 1 );
|
23
|
+
define ( "SEARCHD_COMMAND_UPDATE", 2 );
|
24
|
+
define ( "SEARCHD_COMMAND_KEYWORDS", 3 );
|
25
|
+
define ( "SEARCHD_COMMAND_PERSIST", 4 );
|
26
|
+
define ( "SEARCHD_COMMAND_STATUS", 5 );
|
27
|
+
define ( "SEARCHD_COMMAND_QUERY", 6 );
|
28
|
+
define ( "SEARCHD_COMMAND_FLUSHATTRS", 7 );
|
28
29
|
|
29
30
|
/// current client-side command implementation versions
|
30
|
-
define ( "VER_COMMAND_SEARCH",
|
31
|
+
define ( "VER_COMMAND_SEARCH", 0x117 );
|
31
32
|
define ( "VER_COMMAND_EXCERPT", 0x100 );
|
32
33
|
define ( "VER_COMMAND_UPDATE", 0x102 );
|
33
34
|
define ( "VER_COMMAND_KEYWORDS", 0x100 );
|
34
35
|
define ( "VER_COMMAND_STATUS", 0x100 );
|
35
36
|
define ( "VER_COMMAND_QUERY", 0x100 );
|
37
|
+
define ( "VER_COMMAND_FLUSHATTRS", 0x100 );
|
36
38
|
|
37
39
|
/// known searchd status codes
|
38
40
|
define ( "SEARCHD_OK", 0 );
|
@@ -57,6 +59,8 @@ define ( "SPH_RANK_WORDCOUNT", 3 ); ///< simple word-count weighting, rank is a
|
|
57
59
|
define ( "SPH_RANK_PROXIMITY", 4 );
|
58
60
|
define ( "SPH_RANK_MATCHANY", 5 );
|
59
61
|
define ( "SPH_RANK_FIELDMASK", 6 );
|
62
|
+
define ( "SPH_RANK_SPH04", 7 );
|
63
|
+
define ( "SPH_RANK_TOTAL", 8 );
|
60
64
|
|
61
65
|
/// known sort modes
|
62
66
|
define ( "SPH_SORT_RELEVANCE", 0 );
|
@@ -78,6 +82,7 @@ define ( "SPH_ATTR_ORDINAL", 3 );
|
|
78
82
|
define ( "SPH_ATTR_BOOL", 4 );
|
79
83
|
define ( "SPH_ATTR_FLOAT", 5 );
|
80
84
|
define ( "SPH_ATTR_BIGINT", 6 );
|
85
|
+
define ( "SPH_ATTR_STRING", 7 );
|
81
86
|
define ( "SPH_ATTR_MULTI", 0x40000000 );
|
82
87
|
|
83
88
|
/// known grouping functions
|
@@ -344,11 +349,6 @@ function sphUnpackI64 ( $v )
|
|
344
349
|
$mq = floor($m/10000000.0);
|
345
350
|
$l = $m - $mq*10000000.0 + $c;
|
346
351
|
$h = $q*4294967296.0 + $r*429.0 + $mq;
|
347
|
-
if ( $l==10000000 )
|
348
|
-
{
|
349
|
-
$l = 0;
|
350
|
-
$h += 1;
|
351
|
-
}
|
352
352
|
|
353
353
|
$h = sprintf ( "%.0f", $h );
|
354
354
|
$l = sprintf ( "%07.0f", $l );
|
@@ -358,27 +358,11 @@ function sphUnpackI64 ( $v )
|
|
358
358
|
}
|
359
359
|
|
360
360
|
|
361
|
-
function sphFixUint ( $value )
|
362
|
-
{
|
363
|
-
if ( PHP_INT_SIZE>=8 )
|
364
|
-
{
|
365
|
-
// x64 route, workaround broken unpack() in 5.2.2+
|
366
|
-
if ( $value<0 ) $value += (1<<32);
|
367
|
-
return $value;
|
368
|
-
}
|
369
|
-
else
|
370
|
-
{
|
371
|
-
// x32 route, workaround php signed/unsigned braindamage
|
372
|
-
return sprintf ( "%u", $value );
|
373
|
-
}
|
374
|
-
}
|
375
|
-
|
376
|
-
|
377
361
|
/// sphinx searchd client class
|
378
362
|
class SphinxClient
|
379
363
|
{
|
380
364
|
var $_host; ///< searchd host (default is "localhost")
|
381
|
-
var $_port; ///< searchd port (default is
|
365
|
+
var $_port; ///< searchd port (default is 3312)
|
382
366
|
var $_offset; ///< how many records to seek from result-set start (default is 0)
|
383
367
|
var $_limit; ///< how many records to return from result-set starting at offset (default is 20)
|
384
368
|
var $_mode; ///< query matching mode (default is SPH_MATCH_ALL)
|
@@ -422,7 +406,7 @@ class SphinxClient
|
|
422
406
|
{
|
423
407
|
// per-client-object settings
|
424
408
|
$this->_host = "localhost";
|
425
|
-
$this->_port =
|
409
|
+
$this->_port = 3312;
|
426
410
|
$this->_path = false;
|
427
411
|
$this->_socket = false;
|
428
412
|
|
@@ -555,16 +539,8 @@ class SphinxClient
|
|
555
539
|
|
556
540
|
function _OldConnect ()
|
557
541
|
{
|
558
|
-
if ( $this->_socket!==false )
|
559
|
-
|
560
|
-
// we are in persistent connection mode, so we have a socket
|
561
|
-
// however, need to check whether it's still alive
|
562
|
-
if ( !@feof ( $this->_socket ) )
|
563
|
-
return $this->_socket;
|
564
|
-
|
565
|
-
// force reopen
|
566
|
-
$this->_socket = false;
|
567
|
-
}
|
542
|
+
if ( $this->_socket !== false )
|
543
|
+
return $this->_socket;
|
568
544
|
|
569
545
|
$errno = 0;
|
570
546
|
$errstr = "";
|
@@ -736,13 +712,7 @@ class SphinxClient
|
|
736
712
|
/// set ranking mode
|
737
713
|
function SetRankingMode ( $ranker )
|
738
714
|
{
|
739
|
-
assert ( $ranker
|
740
|
-
|| $ranker==SPH_RANK_BM25
|
741
|
-
|| $ranker==SPH_RANK_NONE
|
742
|
-
|| $ranker==SPH_RANK_WORDCOUNT
|
743
|
-
|| $ranker==SPH_RANK_PROXIMITY
|
744
|
-
|| $ranker==SPH_RANK_MATCHANY
|
745
|
-
|| $ranker==SPH_RANK_FIELDMASK );
|
715
|
+
assert ( $ranker>=0 && $ranker<SPH_RANK_TOTAL );
|
746
716
|
$this->_ranker = $ranker;
|
747
717
|
}
|
748
718
|
|
@@ -1207,7 +1177,16 @@ class SphinxClient
|
|
1207
1177
|
list ( $doc, $weight ) = array_values ( unpack ( "N*N*",
|
1208
1178
|
substr ( $response, $p, 8 ) ) );
|
1209
1179
|
$p += 8;
|
1210
|
-
|
1180
|
+
|
1181
|
+
if ( PHP_INT_SIZE>=8 )
|
1182
|
+
{
|
1183
|
+
// x64 route, workaround broken unpack() in 5.2.2+
|
1184
|
+
if ( $doc<0 ) $doc += (1<<32);
|
1185
|
+
} else
|
1186
|
+
{
|
1187
|
+
// x32 route, workaround php signed/unsigned braindamage
|
1188
|
+
$doc = sprintf ( "%u", $doc );
|
1189
|
+
}
|
1211
1190
|
}
|
1212
1191
|
$weight = sprintf ( "%u", $weight );
|
1213
1192
|
|
@@ -1246,11 +1225,15 @@ class SphinxClient
|
|
1246
1225
|
while ( $nvalues-->0 && $p<$max )
|
1247
1226
|
{
|
1248
1227
|
list(,$val) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4;
|
1249
|
-
$attrvals[$attr][] =
|
1228
|
+
$attrvals[$attr][] = sprintf ( "%u", $val );
|
1250
1229
|
}
|
1230
|
+
} else if ( $type==SPH_ATTR_STRING )
|
1231
|
+
{
|
1232
|
+
$attrvals[$attr] = substr ( $response, $p, $val );
|
1233
|
+
$p += $val;
|
1251
1234
|
} else
|
1252
1235
|
{
|
1253
|
-
$attrvals[$attr] =
|
1236
|
+
$attrvals[$attr] = sprintf ( "%u", $val );
|
1254
1237
|
}
|
1255
1238
|
}
|
1256
1239
|
|
@@ -1317,6 +1300,7 @@ class SphinxClient
|
|
1317
1300
|
if ( !isset($opts["single_passage"]) ) $opts["single_passage"] = false;
|
1318
1301
|
if ( !isset($opts["use_boundaries"]) ) $opts["use_boundaries"] = false;
|
1319
1302
|
if ( !isset($opts["weight_order"]) ) $opts["weight_order"] = false;
|
1303
|
+
if ( !isset($opts["query_mode"]) ) $opts["query_mode"] = false;
|
1320
1304
|
|
1321
1305
|
/////////////////
|
1322
1306
|
// build request
|
@@ -1328,6 +1312,7 @@ class SphinxClient
|
|
1328
1312
|
if ( $opts["single_passage"] ) $flags |= 4;
|
1329
1313
|
if ( $opts["use_boundaries"] ) $flags |= 8;
|
1330
1314
|
if ( $opts["weight_order"] ) $flags |= 16;
|
1315
|
+
if ( $opts["query_mode"] ) $flags |= 32;
|
1331
1316
|
$req = pack ( "NN", 0, $flags ); // mode=0, flags=$flags
|
1332
1317
|
$req .= pack ( "N", strlen($index) ) . $index; // req index
|
1333
1318
|
$req .= pack ( "N", strlen($words) ) . $words; // req words
|
@@ -1626,8 +1611,38 @@ class SphinxClient
|
|
1626
1611
|
$this->_MBPop ();
|
1627
1612
|
return $res;
|
1628
1613
|
}
|
1614
|
+
|
1615
|
+
//////////////////////////////////////////////////////////////////////////
|
1616
|
+
// flush
|
1617
|
+
//////////////////////////////////////////////////////////////////////////
|
1618
|
+
|
1619
|
+
function FlushAttrs ()
|
1620
|
+
{
|
1621
|
+
$this->_MBPush ();
|
1622
|
+
if (!( $fp = $this->_Connect() ))
|
1623
|
+
{
|
1624
|
+
$this->_MBPop();
|
1625
|
+
return false;
|
1626
|
+
}
|
1627
|
+
|
1628
|
+
$req = pack ( "nnN", SEARCHD_COMMAND_FLUSHATTRS, VER_COMMAND_FLUSHATTRS, 0 ); // len=0
|
1629
|
+
if ( !( $this->_Send ( $fp, $req, 8 ) ) ||
|
1630
|
+
!( $response = $this->_GetResponse ( $fp, VER_COMMAND_FLUSHATTRS ) ) )
|
1631
|
+
{
|
1632
|
+
$this->_MBPop ();
|
1633
|
+
return false;
|
1634
|
+
}
|
1635
|
+
|
1636
|
+
$tag = -1;
|
1637
|
+
if ( strlen($response)==4 )
|
1638
|
+
list(,$tag) = unpack ( "N*", $response );
|
1639
|
+
|
1640
|
+
$this->_MBPop ();
|
1641
|
+
return $tag;
|
1642
|
+
}
|
1643
|
+
|
1629
1644
|
}
|
1630
1645
|
|
1631
1646
|
//
|
1632
|
-
// $Id
|
1633
|
-
//
|
1647
|
+
// $Id$
|
1648
|
+
//
|
data/spec/sphinx/sphinx.conf
CHANGED
data/spec/sphinx/sphinx_test.sql
CHANGED
@@ -3,15 +3,13 @@ SQLyog Enterprise - MySQL GUI v5.20
|
|
3
3
|
Host - 5.0.27-community-nt : Database - sphinx_test
|
4
4
|
*********************************************************************
|
5
5
|
Server version : 5.0.27-community-nt
|
6
|
-
*/
|
7
|
-
|
6
|
+
*/
|
8
7
|
|
9
8
|
SET NAMES utf8;
|
10
9
|
|
11
10
|
SET SQL_MODE='';
|
12
11
|
|
13
|
-
|
14
|
-
CREATE database `sphinx_test`;
|
12
|
+
CREATE database IF NOT EXISTS `sphinx_test`;
|
15
13
|
|
16
14
|
USE `sphinx_test`;
|
17
15
|
|
data/sphinx.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{sphinx}
|
8
|
-
s.version = "0.9.
|
8
|
+
s.version = "0.9.10"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Dmytro Shteflyuk"]
|
12
|
-
s.date = %q{2009-
|
12
|
+
s.date = %q{2009-11-04}
|
13
13
|
s.description = %q{An easy interface to Sphinx standalone full-text search engine. It is implemented as plugin for Ruby on Rails, but can be easily used as standalone library.}
|
14
14
|
s.email = %q{kpumuk@kpumuk.info}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -21,18 +21,13 @@ Gem::Specification.new do |s|
|
|
21
21
|
"Rakefile",
|
22
22
|
"VERSION.yml",
|
23
23
|
"init.rb",
|
24
|
+
"install.rb",
|
24
25
|
"lib/sphinx.rb",
|
25
|
-
"lib/sphinx/buffered_io.rb",
|
26
26
|
"lib/sphinx/client.rb",
|
27
|
-
"lib/sphinx/constants.rb",
|
28
|
-
"lib/sphinx/indifferent_access.rb",
|
29
27
|
"lib/sphinx/request.rb",
|
30
28
|
"lib/sphinx/response.rb",
|
31
|
-
"lib/sphinx/server.rb",
|
32
|
-
"lib/sphinx/timeout.rb",
|
33
29
|
"spec/client_response_spec.rb",
|
34
30
|
"spec/client_spec.rb",
|
35
|
-
"spec/client_validations_spec.rb",
|
36
31
|
"spec/fixtures/default_search.php",
|
37
32
|
"spec/fixtures/default_search_index.php",
|
38
33
|
"spec/fixtures/excerpt_custom.php",
|
@@ -81,6 +76,7 @@ Gem::Specification.new do |s|
|
|
81
76
|
"spec/fixtures/ranking_none.php",
|
82
77
|
"spec/fixtures/ranking_proximity.php",
|
83
78
|
"spec/fixtures/ranking_proximity_bm25.php",
|
79
|
+
"spec/fixtures/ranking_sph04.php",
|
84
80
|
"spec/fixtures/ranking_wordcount.php",
|
85
81
|
"spec/fixtures/retries.php",
|
86
82
|
"spec/fixtures/retries_delay.php",
|
@@ -96,11 +92,12 @@ Gem::Specification.new do |s|
|
|
96
92
|
"spec/fixtures/update_attributes.php",
|
97
93
|
"spec/fixtures/update_attributes_mva.php",
|
98
94
|
"spec/fixtures/weights.php",
|
99
|
-
"spec/spec_helper.rb",
|
100
95
|
"spec/sphinx/sphinx-id64.conf",
|
101
96
|
"spec/sphinx/sphinx.conf",
|
102
97
|
"spec/sphinx/sphinx_test.sql",
|
103
|
-
"sphinx.gemspec"
|
98
|
+
"sphinx.gemspec",
|
99
|
+
"sphinx.yml.tpl",
|
100
|
+
"tasks/sphinx.rake"
|
104
101
|
]
|
105
102
|
s.homepage = %q{http://github.com/kpumuk/sphinx}
|
106
103
|
s.rdoc_options = ["--charset=UTF-8"]
|
@@ -109,9 +106,7 @@ Gem::Specification.new do |s|
|
|
109
106
|
s.summary = %q{Sphinx Client API for Ruby}
|
110
107
|
s.test_files = [
|
111
108
|
"spec/client_response_spec.rb",
|
112
|
-
"spec/client_spec.rb"
|
113
|
-
"spec/client_validations_spec.rb",
|
114
|
-
"spec/spec_helper.rb"
|
109
|
+
"spec/client_spec.rb"
|
115
110
|
]
|
116
111
|
|
117
112
|
if s.respond_to? :specification_version then
|
data/sphinx.yml.tpl
ADDED
data/tasks/sphinx.rake
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
namespace :sphinx do
|
2
|
+
desc 'Run indexer for configured indexes'
|
3
|
+
task :index do
|
4
|
+
config = load_config
|
5
|
+
if config[:indexes]
|
6
|
+
system "#{config[:root_dir]}/indexer --config \"#{config[:config_file]}\" #{config[:indexes]}"
|
7
|
+
else
|
8
|
+
puts 'You should specify indexes in sphinx.yml'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
desc 'Run indexer for all indexes'
|
13
|
+
task :index_all do
|
14
|
+
config = load_config
|
15
|
+
system "#{config[:root_dir]}/indexer --config \"#{config[:config_file]}\" --all"
|
16
|
+
end
|
17
|
+
|
18
|
+
desc 'Rotate configured indexes and restart searchd server'
|
19
|
+
task :rotate do
|
20
|
+
config = load_config
|
21
|
+
if config[:indexes]
|
22
|
+
system "#{config[:root_dir]}/indexer --config \"#{config[:config_file]}\" --rotate #{config[:indexes]}"
|
23
|
+
else
|
24
|
+
puts 'You should specify indexes in sphinx.yml'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
desc 'Rotate all indexes and restart searchd server'
|
29
|
+
task :rotate_all do
|
30
|
+
config = load_config
|
31
|
+
system "#{config[:root_dir]}/indexer --config \"#{config[:config_file]}\" --rotate --all"
|
32
|
+
end
|
33
|
+
|
34
|
+
desc 'Start searchd server'
|
35
|
+
task :start do
|
36
|
+
config = load_config
|
37
|
+
if File.exists?(config[:pid_file])
|
38
|
+
puts 'Sphinx searchd server is already started.'
|
39
|
+
else
|
40
|
+
system "#{config[:root_dir]}/searchd --config \"#{config[:config_file]}\""
|
41
|
+
puts 'Sphinx searchd server started.'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
desc 'Stop searchd server'
|
46
|
+
task :stop do
|
47
|
+
config = load_config
|
48
|
+
unless File.exists?(config[:pid_file])
|
49
|
+
puts 'Sphinx searchd server is not running.'
|
50
|
+
else
|
51
|
+
pid = File.read(config[:pid_file]).chomp
|
52
|
+
kill 'SIGHUP', pid
|
53
|
+
puts 'Sphinx searchd server stopped.'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
desc 'Restart searchd server'
|
58
|
+
task :restart => [:stop, :start]
|
59
|
+
|
60
|
+
def load_config
|
61
|
+
return @sphinx_config if @sphinx_config
|
62
|
+
|
63
|
+
options = YAML.load_file(File.dirname(__FILE__) + '/../../../../config/sphinx.yml') rescue {}
|
64
|
+
@sphinx_config = {
|
65
|
+
:config_file => options['config_file'] || '/etc/sphinx.conf',
|
66
|
+
:root_dir => options['root_dir'] || '/usr/bin',
|
67
|
+
:indexes => options['indexes']
|
68
|
+
}
|
69
|
+
sphinx_config = File.read(@sphinx_config[:config_file]) rescue ''
|
70
|
+
|
71
|
+
sphinx_config =~ /searchd\s*{.*pid_file\s*=\s*(.*?)\n.*}/m
|
72
|
+
@sphinx_config[:pid_file] = $1 || '/var/run/searchd.pid'
|
73
|
+
return @sphinx_config
|
74
|
+
end
|
75
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sphinx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmytro Shteflyuk
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-11-04 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -27,18 +27,13 @@ files:
|
|
27
27
|
- Rakefile
|
28
28
|
- VERSION.yml
|
29
29
|
- init.rb
|
30
|
+
- install.rb
|
30
31
|
- lib/sphinx.rb
|
31
|
-
- lib/sphinx/buffered_io.rb
|
32
32
|
- lib/sphinx/client.rb
|
33
|
-
- lib/sphinx/constants.rb
|
34
|
-
- lib/sphinx/indifferent_access.rb
|
35
33
|
- lib/sphinx/request.rb
|
36
34
|
- lib/sphinx/response.rb
|
37
|
-
- lib/sphinx/server.rb
|
38
|
-
- lib/sphinx/timeout.rb
|
39
35
|
- spec/client_response_spec.rb
|
40
36
|
- spec/client_spec.rb
|
41
|
-
- spec/client_validations_spec.rb
|
42
37
|
- spec/fixtures/default_search.php
|
43
38
|
- spec/fixtures/default_search_index.php
|
44
39
|
- spec/fixtures/excerpt_custom.php
|
@@ -87,6 +82,7 @@ files:
|
|
87
82
|
- spec/fixtures/ranking_none.php
|
88
83
|
- spec/fixtures/ranking_proximity.php
|
89
84
|
- spec/fixtures/ranking_proximity_bm25.php
|
85
|
+
- spec/fixtures/ranking_sph04.php
|
90
86
|
- spec/fixtures/ranking_wordcount.php
|
91
87
|
- spec/fixtures/retries.php
|
92
88
|
- spec/fixtures/retries_delay.php
|
@@ -102,11 +98,12 @@ files:
|
|
102
98
|
- spec/fixtures/update_attributes.php
|
103
99
|
- spec/fixtures/update_attributes_mva.php
|
104
100
|
- spec/fixtures/weights.php
|
105
|
-
- spec/spec_helper.rb
|
106
101
|
- spec/sphinx/sphinx-id64.conf
|
107
102
|
- spec/sphinx/sphinx.conf
|
108
103
|
- spec/sphinx/sphinx_test.sql
|
109
104
|
- sphinx.gemspec
|
105
|
+
- sphinx.yml.tpl
|
106
|
+
- tasks/sphinx.rake
|
110
107
|
has_rdoc: true
|
111
108
|
homepage: http://github.com/kpumuk/sphinx
|
112
109
|
licenses: []
|
@@ -138,5 +135,3 @@ summary: Sphinx Client API for Ruby
|
|
138
135
|
test_files:
|
139
136
|
- spec/client_response_spec.rb
|
140
137
|
- spec/client_spec.rb
|
141
|
-
- spec/client_validations_spec.rb
|
142
|
-
- spec/spec_helper.rb
|
data/lib/sphinx/buffered_io.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# A simple wrapper around <tt>Net::BufferedIO</tt> performing
|
2
|
-
# non-blocking select.
|
3
|
-
#
|
4
|
-
# @private
|
5
|
-
class Sphinx::BufferedIO < Net::BufferedIO # :nodoc:
|
6
|
-
BUFSIZE = 1024 * 16
|
7
|
-
|
8
|
-
if RUBY_VERSION < '1.9.1'
|
9
|
-
def rbuf_fill
|
10
|
-
begin
|
11
|
-
@rbuf << @io.read_nonblock(BUFSIZE)
|
12
|
-
rescue Errno::EWOULDBLOCK
|
13
|
-
retry unless @read_timeout
|
14
|
-
if IO.select([@io], nil, nil, @read_timeout)
|
15
|
-
retry
|
16
|
-
else
|
17
|
-
raise Timeout::Error, 'IO timeout'
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def setsockopt(*args)
|
24
|
-
@io.setsockopt(*args)
|
25
|
-
end
|
26
|
-
end
|