Skip to content

Commit 10f0fc5

Browse files
committed
Update to version 2.0.2
1 parent ea5b566 commit 10f0fc5

File tree

2 files changed

+31
-10
lines changed

2 files changed

+31
-10
lines changed

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"type": "library",
99
"keywords": ["Sphinx Search","search-engine","api"],
1010
"homepage": "http://sphinxsearch.com/",
11-
"version": "2.1.0",
11+
"version": "2.0.2",
1212
"authors": [
1313
{
1414
"name": "Andrew Aksyonoff",

sphinxapi.php

+30-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22

33
//
4-
// $Id: sphinxapi.php 2758 2011-04-04 11:10:44Z kevg $
4+
// $Id: sphinxapi.php 2970 2011-09-23 16:50:22Z klirichek $
55
//
66

77
//
@@ -29,8 +29,8 @@
2929
define ( "SEARCHD_COMMAND_FLUSHATTRS", 7 );
3030

3131
/// current client-side command implementation versions
32-
define ( "VER_COMMAND_SEARCH", 0x118 );
33-
define ( "VER_COMMAND_EXCERPT", 0x103 );
32+
define ( "VER_COMMAND_SEARCH", 0x119 );
33+
define ( "VER_COMMAND_EXCERPT", 0x104 );
3434
define ( "VER_COMMAND_UPDATE", 0x102 );
3535
define ( "VER_COMMAND_KEYWORDS", 0x100 );
3636
define ( "VER_COMMAND_STATUS", 0x100 );
@@ -61,7 +61,8 @@
6161
define ( "SPH_RANK_MATCHANY", 5 );
6262
define ( "SPH_RANK_FIELDMASK", 6 );
6363
define ( "SPH_RANK_SPH04", 7 );
64-
define ( "SPH_RANK_TOTAL", 8 );
64+
define ( "SPH_RANK_EXPR", 8 );
65+
define ( "SPH_RANK_TOTAL", 9 );
6566

6667
/// known sort modes
6768
define ( "SPH_SORT_RELEVANCE", 0 );
@@ -84,7 +85,8 @@
8485
define ( "SPH_ATTR_FLOAT", 5 );
8586
define ( "SPH_ATTR_BIGINT", 6 );
8687
define ( "SPH_ATTR_STRING", 7 );
87-
define ( "SPH_ATTR_MULTI", 0x40000000 );
88+
define ( "SPH_ATTR_MULTI", 0x40000001 );
89+
define ( "SPH_ATTR_MULTI64", 0x40000002 );
8890

8991
/// known grouping functions
9092
define ( "SPH_GROUPBY_DAY", 0 );
@@ -405,6 +407,7 @@ class SphinxClient
405407
var $_anchor; ///< geographical anchor point
406408
var $_indexweights; ///< per-index weights
407409
var $_ranker; ///< ranking mode (default is SPH_RANK_PROXIMITY_BM25)
410+
var $_rankexpr; ///< ranking mode expression (for SPH_RANK_EXPR)
408411
var $_maxquerytime; ///< max query time, milliseconds (default is 0, do not limit)
409412
var $_fieldweights; ///< per-field-name weights
410413
var $_overrides; ///< per-query attribute values overrides
@@ -453,6 +456,7 @@ function SphinxClient ()
453456
$this->_anchor = array ();
454457
$this->_indexweights= array ();
455458
$this->_ranker = SPH_RANK_PROXIMITY_BM25;
459+
$this->_rankexpr = "";
456460
$this->_maxquerytime= 0;
457461
$this->_fieldweights= array();
458462
$this->_overrides = array();
@@ -735,10 +739,12 @@ function SetMatchMode ( $mode )
735739
}
736740

737741
/// set ranking mode
738-
function SetRankingMode ( $ranker )
742+
function SetRankingMode ( $ranker, $rankexpr="" )
739743
{
740744
assert ( $ranker>=0 && $ranker<SPH_RANK_TOTAL );
745+
assert ( is_string($rankexpr) );
741746
$this->_ranker = $ranker;
747+
$this->_rankexpr = $rankexpr;
742748
}
743749

744750
/// set matches sorting mode
@@ -981,7 +987,10 @@ function AddQuery ( $query, $index="*", $comment="" )
981987
$this->_MBPush ();
982988

983989
// build request
984-
$req = pack ( "NNNNN", $this->_offset, $this->_limit, $this->_mode, $this->_ranker, $this->_sort ); // mode and limits
990+
$req = pack ( "NNNN", $this->_offset, $this->_limit, $this->_mode, $this->_ranker );
991+
if ( $this->_ranker==SPH_RANK_EXPR )
992+
$req .= pack ( "N", strlen($this->_rankexpr) ) . $this->_rankexpr;
993+
$req .= pack ( "N", $this->_sort ); // (deprecated) sort mode
985994
$req .= pack ( "N", strlen($this->_sortby) ) . $this->_sortby;
986995
$req .= pack ( "N", strlen($query) ) . $query; // query itself
987996
$req .= pack ( "N", count($this->_weights) ); // weights
@@ -1234,7 +1243,7 @@ function _ParseSearchResponse ( $response, $nreqs )
12341243

12351244
// handle everything else as unsigned ints
12361245
list(,$val) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4;
1237-
if ( $type & SPH_ATTR_MULTI )
1246+
if ( $type==SPH_ATTR_MULTI )
12381247
{
12391248
$attrvals[$attr] = array ();
12401249
$nvalues = $val;
@@ -1243,6 +1252,15 @@ function _ParseSearchResponse ( $response, $nreqs )
12431252
list(,$val) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4;
12441253
$attrvals[$attr][] = sphFixUint($val);
12451254
}
1255+
} else if ( $type==SPH_ATTR_MULTI64 )
1256+
{
1257+
$attrvals[$attr] = array ();
1258+
$nvalues = $val;
1259+
while ( $nvalues>0 && $p<$max )
1260+
{
1261+
$attrvals[$attr][] = sphUnpackU64 ( substr ( $response, $p, 8 ) ); $p += 8;
1262+
$nvalues -= 2;
1263+
}
12461264
} else if ( $type==SPH_ATTR_STRING )
12471265
{
12481266
$attrvals[$attr] = substr ( $response, $p, $val );
@@ -1326,6 +1344,8 @@ function BuildExcerpts ( $docs, $index, $words, $opts=array() )
13261344
if ( !isset($opts["allow_empty"]) ) $opts["allow_empty"] = false;
13271345
if ( !isset($opts["passage_boundary"]) ) $opts["passage_boundary"] = "none";
13281346
if ( !isset($opts["emit_zones"]) ) $opts["emit_zones"] = false;
1347+
if ( !isset($opts["load_files_scattered"]) ) $opts["load_files_scattered"] = false;
1348+
13291349

13301350
/////////////////
13311351
// build request
@@ -1342,6 +1362,7 @@ function BuildExcerpts ( $docs, $index, $words, $opts=array() )
13421362
if ( $opts["load_files"] ) $flags |= 128;
13431363
if ( $opts["allow_empty"] ) $flags |= 256;
13441364
if ( $opts["emit_zones"] ) $flags |= 512;
1365+
if ( $opts["load_files_scattered"] ) $flags |= 1024;
13451366
$req = pack ( "NN", 0, $flags ); // mode=0, flags=$flags
13461367
$req .= pack ( "N", strlen($index) ) . $index; // req index
13471368
$req .= pack ( "N", strlen($words) ) . $words; // req words
@@ -1687,5 +1708,5 @@ function FlushAttributes ()
16871708
}
16881709

16891710
//
1690-
// $Id: sphinxapi.php 2758 2011-04-04 11:10:44Z kevg $
1711+
// $Id: sphinxapi.php 2970 2011-09-23 16:50:22Z klirichek $
16911712
//

0 commit comments

Comments
 (0)