Skip to content

Commit ef9b125

Browse files
committed
Restructured to follow current scheme of Filters, Querys, etc. and expanded tests to test integration
1 parent 42d727d commit ef9b125

File tree

3 files changed

+85
-66
lines changed

3 files changed

+85
-66
lines changed

lib/Elastica/Query.php

+10
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,16 @@ public function setSuggest(Suggest $suggest)
377377
$this->addParam(NULL, $suggest->toArray());
378378
$this->_suggest = 1;
379379
}
380+
381+
/**
382+
* Add a Rescore
383+
*
384+
* @param \Elastica\Rescore\AbstractRescore $suggest suggestion object
385+
*/
386+
public function setRescore($rescore)
387+
{
388+
$this->setParam('rescore', $rescore->toArray());
389+
}
380390
}
381391

382392

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

3-
namespace Elastica\Query;
3+
namespace Elastica\Rescore;
44

55
use Elastica\Query as BaseQuery;
66

77
/**
8-
* Rescore query
8+
* Query Rescore
99
*
1010
* @category Xodoa
1111
* @package Elastica
1212
* @author Jason Hu <[email protected]>
1313
* @link http://www.elasticsearch.org/guide/reference/api/search/rescore/
1414
*/
15-
class Rescore extends AbstractQuery
15+
class Query extends AbstractRescore
1616
{
1717
/**
1818
* Constructor
1919
*
2020
* @param string|\Elastica\Query\AbstractQuery $rescoreQuery
2121
* @param string|\Elastica\Query\AbstractQuery $query
2222
*/
23-
public function __construct($query = null, $rescoreQuery= null)
23+
public function __construct($query = null)
2424
{
25-
$this->setQuery($query);
26-
$this->setParam('rescore', array());
27-
$this->setRescoreQuery($rescoreQuery);
25+
$this->setParam('query', array());
26+
$this->setRescoreQuery($query);
2827
}
2928

3029
/**
@@ -44,20 +43,6 @@ public function toArray()
4443
return $data;
4544
}
4645

47-
/**
48-
* Sets query object
49-
*
50-
* @param string|\Elastica\Query|\Elastica\Query\AbstractQuery $query
51-
* @return \Elastica\Query\Rescore
52-
*/
53-
public function setQuery($query)
54-
{
55-
$query = BaseQuery::create($query);
56-
$data = $query->toArray();
57-
58-
return $this->setParam('query', $data['query']);
59-
}
60-
6146
/**
6247
* Sets rescoreQuery object
6348
*
@@ -69,24 +54,10 @@ public function setRescoreQuery($rescoreQuery)
6954
$query = BaseQuery::create($rescoreQuery);
7055
$data = $query->toArray();
7156

72-
$rescore = $this->getParam('rescore');
73-
$rescore['query']['rescore_query'] = $data['query'];
74-
75-
return $this->setParam('rescore', $rescore);
76-
}
77-
78-
/**
79-
* Sets window_size
80-
*
81-
* @param int $size
82-
* @return \Elastica\Query\Rescore
83-
*/
84-
public function setWindowSize($size)
85-
{
86-
$rescore = $this->getParam('rescore');
87-
$rescore['window_size'] = $size;
57+
$query = $this->getParam('query');
58+
$query['rescore_query'] = $data['query'];
8859

89-
return $this->setParam('rescore', $rescore);
60+
return $this->setParam('query', $query);
9061
}
9162

9263
/**
@@ -97,10 +68,10 @@ public function setWindowSize($size)
9768
*/
9869
public function setQueryWeight($weight)
9970
{
100-
$rescore = $this->getParam('rescore');
101-
$rescore['query_weight'] = $weight;
71+
$query = $this->getParam('query');
72+
$query['query_weight'] = $weight;
10273

103-
return $this->setParam('rescore', $rescore);
74+
return $this->setParam('query', $query);
10475
}
10576

10677
/**
@@ -111,9 +82,9 @@ public function setQueryWeight($weight)
11182
*/
11283
public function setRescoreQueryWeight($weight)
11384
{
114-
$rescore = $this->getParam('rescore');
115-
$rescore['rescore_query_weight'] = $weight;
85+
$query = $this->getParam('query');
86+
$query['rescore_query_weight'] = $weight;
11687

117-
return $this->setParam('rescore', $rescore);
88+
return $this->setParam('query', $query);
11889
}
11990
}

test/lib/Elastica/Test/Query/RescoreTest.php

+60-22
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,38 @@
22

33
namespace Elastica\Test\Query;
44

5-
use Elastica\Query\Rescore;
5+
use Elastica\Rescore\Query as QueryRescore;
66
use Elastica\Query\Term;
77
use Elastica\Query\Match;
8+
use Elastica\Query;
89
use Elastica\Test\Base as BaseTest;
910

1011
class RescoreTest extends BaseTest
1112
{
13+
/**
14+
* @var Index
15+
*/
16+
protected $_index;
17+
18+
protected function setUp()
19+
{
20+
parent::setUp();
21+
$this->_index = $this->_createIndex("rescore_test");
22+
$this->_index->refresh();
23+
}
24+
1225
public function testToArray()
1326
{
14-
$query = new Rescore();
27+
$query = new Query();
1528
$mainQuery = new Match();
1629
$mainQuery = $mainQuery->setFieldQuery('test1', 'foo');
17-
$rescoreQuery = new Term();
18-
$rescoreQuery = $rescoreQuery->setTerm('test2', 'bar', 2);
30+
$secQuery = new Term();
31+
$secQuery = $secQuery->setTerm('test2', 'bar', 2);
32+
$queryRescore = new QueryRescore($secQuery);
1933
$query->setQuery($mainQuery);
20-
$query->setRescoreQuery($rescoreQuery);
21-
34+
$query->setRescore($queryRescore);
2235
$data = $query->toArray();
36+
2337
$expected = array(
2438
'query' => array(
2539
'match' => array(
@@ -47,16 +61,17 @@ public function testToArray()
4761

4862
public function testSetSize()
4963
{
50-
$query = new Rescore();
64+
$query = new Query();
5165
$mainQuery = new Match();
5266
$mainQuery = $mainQuery->setFieldQuery('test1', 'foo');
53-
$rescoreQuery = new Term();
54-
$rescoreQuery = $rescoreQuery->setTerm('test2', 'bar', 2);
67+
$secQuery = new Term();
68+
$secQuery = $secQuery->setTerm('test2', 'bar', 2);
69+
$queryRescore = new QueryRescore($secQuery);
70+
$queryRescore->setWindowSize(50);
5571
$query->setQuery($mainQuery);
56-
$query->setRescoreQuery($rescoreQuery);
57-
$query->setWindowSize(50);
58-
72+
$query->setRescore($queryRescore);
5973
$data = $query->toArray();
74+
6075
$expected = array(
6176
'query' => array(
6277
'match' => array(
@@ -85,18 +100,19 @@ public function testSetSize()
85100

86101
public function testSetWeights()
87102
{
88-
$query = new Rescore();
103+
$query = new Query();
89104
$mainQuery = new Match();
90105
$mainQuery = $mainQuery->setFieldQuery('test1', 'foo');
91-
$rescoreQuery = new Term();
92-
$rescoreQuery = $rescoreQuery->setTerm('test2', 'bar', 2);
106+
$secQuery = new Term();
107+
$secQuery = $secQuery->setTerm('test2', 'bar', 2);
108+
$queryRescore = new QueryRescore($secQuery);
109+
$queryRescore->setWindowSize(50);
110+
$queryRescore->setQueryWeight(.7);
111+
$queryRescore->setRescoreQueryWeight(1.2);
93112
$query->setQuery($mainQuery);
94-
$query->setRescoreQuery($rescoreQuery);
95-
$query->setWindowSize(50);
96-
$query->setQueryWeight(.7);
97-
$query->setRescoreQueryWeight(1.2);
98-
113+
$query->setRescore($queryRescore);
99114
$data = $query->toArray();
115+
100116
$expected = array(
101117
'query' => array(
102118
'match' => array(
@@ -116,12 +132,34 @@ public function testSetWeights()
116132
),
117133
),
118134
),
135+
'query_weight' => 0.7,
136+
'rescore_query_weight' => 1.2
119137
),
120-
'query_weight' => 0.7,
121-
'rescore_query_weight' => 1.2
122138
),
123139
);
124140

125141
$this->assertEquals($expected, $data);
126142
}
143+
144+
public function testQuery()
145+
{
146+
$query = new Query();
147+
$mainQuery = new Match();
148+
$mainQuery = $mainQuery->setFieldQuery('test1', 'foo');
149+
$secQuery = new Term();
150+
$secQuery = $secQuery->setTerm('test2', 'bar', 2);
151+
$queryRescore = new QueryRescore($secQuery);
152+
$queryRescore->setWindowSize(50);
153+
$queryRescore->setQueryWeight(.7);
154+
$queryRescore->setRescoreQueryWeight(1.2);
155+
$query->setQuery($mainQuery);
156+
$query->setRescore($queryRescore);
157+
$data = $query->toArray();
158+
159+
$results = $this->_index->search($query);
160+
$response = $results->getResponse();
161+
162+
$this->assertEquals(true, $response->isOk());
163+
$this->assertEquals(0, $results->getTotalHits());
164+
}
127165
}

0 commit comments

Comments
 (0)