Skip to content

Commit

Permalink
Replace Match query class by MatchQuery
Browse files Browse the repository at this point in the history
  • Loading branch information
deguif committed Sep 25, 2020
1 parent 9146c80 commit 1f4c53e
Show file tree
Hide file tree
Showing 8 changed files with 38 additions and 201 deletions.
177 changes: 7 additions & 170 deletions src/Query/Match.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,180 +2,17 @@

namespace Elastica\Query;

\trigger_error('Elastica\Query\Match is deprecated. Use Elastica\Query\MatchQuery instead. From PHP 8 match is reserved word and this class will be removed in further Elastica releases', \E_USER_DEPRECATED);

/**
* Match query.
*
* @author F21
* @author WONG Wing Lun <luiges90@gmail.com>
* This class is for backward compatibility reason. For PHP 8 and above use MatchQuery as Match is reserved.
*
* @author Nicolas Ruflin <spam@ruflin.com>
*
* @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html
* @deprecated Use MatchQuery instead. From PHP 8 match is reserved word and this class will be removed in further Elastica releases
*/
class Match extends AbstractQuery
class Match extends MatchQuery
{
public const OPERATOR_OR = 'or';
public const OPERATOR_AND = 'and';

public const ZERO_TERM_NONE = 'none';
public const ZERO_TERM_ALL = 'all';

public const FUZZINESS_AUTO = 'AUTO';

/**
* @param string $field
* @param mixed $values
*/
public function __construct(?string $field = null, $values = null)
{
if (null !== $field && null !== $values) {
$this->setParam($field, $values);
}
}

/**
* Sets a param for the message array.
*
* @param mixed $values
*
* @return $this
*/
public function setField(string $field, $values): self
{
return $this->setParam($field, $values);
}

/**
* Sets a param for the given field.
*
* @return $this
*/
public function setFieldParam(string $field, string $key, string $value): self
{
if (!isset($this->_params[$field])) {
$this->_params[$field] = [];
}

$this->_params[$field][$key] = $value;

return $this;
}

/**
* Sets the query string.
*
* @return $this
*/
public function setFieldQuery(string $field, string $query): self
{
return $this->setFieldParam($field, 'query', $query);
}

/**
* Set field operator.
*
* @return $this
*/
public function setFieldOperator(string $field, string $operator = self::OPERATOR_OR): self
{
return $this->setFieldParam($field, 'operator', $operator);
}

/**
* Set field analyzer.
*
* @return $this
*/
public function setFieldAnalyzer(string $field, string $analyzer): self
{
return $this->setFieldParam($field, 'analyzer', $analyzer);
}

/**
* Set field boost value.
*
* If not set, defaults to 1.0.
*
* @return $this
*/
public function setFieldBoost(string $field, float $boost = 1.0): self
{
return $this->setFieldParam($field, 'boost', $boost);
}

/**
* Set field minimum should match.
*
* @param int|string $minimumShouldMatch
*
* @return $this
*
* @see Possible values for minimum_should_match https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html
*/
public function setFieldMinimumShouldMatch(string $field, $minimumShouldMatch): self
{
return $this->setFieldParam($field, 'minimum_should_match', $minimumShouldMatch);
}

/**
* Set field fuzziness.
*
* @param mixed $fuzziness
*
* @return $this
*/
public function setFieldFuzziness(string $field, $fuzziness): self
{
return $this->setFieldParam($field, 'fuzziness', $fuzziness);
}

/**
* Set field fuzzy rewrite.
*
* @return $this
*/
public function setFieldFuzzyRewrite(string $field, string $fuzzyRewrite): self
{
return $this->setFieldParam($field, 'fuzzy_rewrite', $fuzzyRewrite);
}

/**
* Set field prefix length.
*
* @return $this
*/
public function setFieldPrefixLength(string $field, int $prefixLength): self
{
return $this->setFieldParam($field, 'prefix_length', $prefixLength);
}

/**
* Set field max expansions.
*
* @return $this
*/
public function setFieldMaxExpansions(string $field, int $maxExpansions): self
{
return $this->setFieldParam($field, 'max_expansions', $maxExpansions);
}

/**
* Set zero terms query.
*
* If not set, default to 'none'
*
* @return $this
*/
public function setFieldZeroTermsQuery(string $field, string $zeroTermQuery = self::ZERO_TERM_NONE): self
{
return $this->setFieldParam($field, 'zero_terms_query', $zeroTermQuery);
}

/**
* Set cutoff frequency.
*
* @return $this
*/
public function setFieldCutoffFrequency(string $field, float $cutoffFrequency): self
{
return $this->setFieldParam($field, 'cutoff_frequency', $cutoffFrequency);
}
}
6 changes: 3 additions & 3 deletions src/QueryBuilder/DSL/Query.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@
use Elastica\Query\HasChild;
use Elastica\Query\HasParent;
use Elastica\Query\Ids;
use Elastica\Query\Match;
use Elastica\Query\MatchAll;
use Elastica\Query\MatchNone;
use Elastica\Query\MatchPhrase;
use Elastica\Query\MatchPhrasePrefix;
use Elastica\Query\MatchQuery;
use Elastica\Query\MoreLikeThis;
use Elastica\Query\MultiMatch;
use Elastica\Query\Nested;
Expand Down Expand Up @@ -72,9 +72,9 @@ public function getType(): string
*
* @param mixed $values
*/
public function match(?string $field = null, $values = null): Match
public function match(?string $field = null, $values = null): MatchQuery
{
return new Match($field, $values);
return new MatchQuery($field, $values);
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/Util.php
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ public static function getParamName($class)

$parts = \explode('\\', $class);
$last = \array_pop($parts);
$last = \preg_replace('/Query$/', '', $last); // for BoolQuery
$last = \preg_replace('/Query$/', '', $last); // for BoolQuery and MatchQuery

return self::toSnakeCase($last);
}
Expand Down
24 changes: 12 additions & 12 deletions tests/Query/MatchTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace Elastica\Test\Query;

use Elastica\Document;
use Elastica\Query\Match;
use Elastica\Query\MatchQuery;
use Elastica\Test\Base as BaseTest;

/**
Expand All @@ -27,7 +27,7 @@ public function testToArray(): void
$prefixLength = 3;
$maxExpansions = 12;

$query = new Match();
$query = new MatchQuery();
$query->setFieldQuery($field, $testQuery);
$this->hideDeprecated();
$this->showDeprecated();
Expand Down Expand Up @@ -80,7 +80,7 @@ public function testMatch(): void
$field = 'name';
$operator = 'or';

$query = new Match();
$query = new MatchQuery();
$query->setFieldQuery($field, 'Basel New');
$query->setFieldOperator($field, $operator);

Expand Down Expand Up @@ -110,7 +110,7 @@ public function testMatchSetFieldBoost(): void
$field = 'name';
$operator = 'or';

$query = new Match();
$query = new MatchQuery();
$query->setFieldQuery($field, 'Basel New');
$query->setFieldOperator($field, $operator);
$query->setFieldBoost($field, 1.2);
Expand Down Expand Up @@ -141,7 +141,7 @@ public function testMatchSetFieldBoostWithString(): void
$field = 'name';
$operator = 'or';

$query = new Match();
$query = new MatchQuery();
$query->setFieldQuery($field, 'Basel New');
$query->setFieldOperator($field, $operator);
$query->setFieldBoost($field, '1.2');
Expand All @@ -167,9 +167,9 @@ public function testMatchZeroTerm(): void

$index->refresh();

$query = new Match();
$query = new MatchQuery();
$query->setFieldQuery('name', '');
$query->setFieldZeroTermsQuery('name', Match::ZERO_TERM_ALL);
$query->setFieldZeroTermsQuery('name', MatchQuery::ZERO_TERM_ALL);

$resultSet = $index->search($query);

Expand All @@ -182,7 +182,7 @@ public function testMatchZeroTerm(): void
public function testMatchFuzzinessType(): void
{
$field = 'test';
$query = new Match();
$query = new MatchQuery();

$fuzziness = 'AUTO';
$query->setFieldFuzziness($field, $fuzziness);
Expand All @@ -202,14 +202,14 @@ public function testMatchFuzzinessType(): void
*/
public function testConstruct(): void
{
$match = new Match(null, 'values');
$match = new MatchQuery(null, 'values');
$this->assertEquals(['match' => []], $match->toArray());

$match = new Match('field', null);
$match = new MatchQuery('field', null);
$this->assertEquals(['match' => []], $match->toArray());

$match1 = new Match('field', 'values');
$match2 = new Match();
$match1 = new MatchQuery('field', 'values');
$match2 = new MatchQuery();
$match2->setField('field', 'values');
$this->assertEquals($match1->toArray(), $match2->toArray());
}
Expand Down
4 changes: 2 additions & 2 deletions tests/Query/PostFilterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

use Elastica\Document;
use Elastica\Query;
use Elastica\Query\Match;
use Elastica\Query\MatchQuery;
use Elastica\Query\Term;
use Elastica\Test\Base as BaseTest;

Expand Down Expand Up @@ -36,7 +36,7 @@ public function testQuery(): void
{
$query = new Query();

$match = new Match();
$match = new MatchQuery();
$match->setField('make', 'ford');

$query->setQuery($match);
Expand Down
12 changes: 6 additions & 6 deletions tests/Query/RescoreTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace Elastica\Test\Query;

use Elastica\Query;
use Elastica\Query\Match;
use Elastica\Query\MatchQuery;
use Elastica\Query\Term;
use Elastica\Rescore\Query as QueryRescore;
use Elastica\Test\Base as BaseTest;
Expand All @@ -19,7 +19,7 @@ class RescoreTest extends BaseTest
public function testToArray(): void
{
$query = new Query();
$mainQuery = new Match();
$mainQuery = new MatchQuery();
$mainQuery = $mainQuery->setFieldQuery('test1', 'foo');
$secQuery = new Term();
$secQuery = $secQuery->setTerm('test2', 'bar', 2);
Expand Down Expand Up @@ -59,7 +59,7 @@ public function testToArray(): void
public function testSetSize(): void
{
$query = new Query();
$mainQuery = new Match();
$mainQuery = new MatchQuery();
$mainQuery = $mainQuery->setFieldQuery('test1', 'foo');
$secQuery = new Term();
$secQuery = $secQuery->setTerm('test2', 'bar', 2);
Expand Down Expand Up @@ -101,7 +101,7 @@ public function testSetSize(): void
public function testSetWeights(): void
{
$query = new Query();
$mainQuery = new Match();
$mainQuery = new MatchQuery();
$mainQuery = $mainQuery->setFieldQuery('test1', 'foo');
$secQuery = new Term();
$secQuery = $secQuery->setTerm('test2', 'bar', 2);
Expand Down Expand Up @@ -147,7 +147,7 @@ public function testSetWeights(): void
public function testMultipleQueries(): void
{
$query = new Query();
$mainQuery = new Match();
$mainQuery = new MatchQuery();
$mainQuery = $mainQuery->setFieldQuery('test1', 'foo');

$secQuery1 = new Term();
Expand Down Expand Up @@ -219,7 +219,7 @@ public function testMultipleQueries(): void
public function testQuery(): void
{
$query = new Query();
$mainQuery = new Match();
$mainQuery = new MatchQuery();
$mainQuery = $mainQuery->setFieldQuery('test1', 'foo');
$secQuery = new Term();
$secQuery = $secQuery->setTerm('test2', 'bar', 2);
Expand Down
Loading

0 comments on commit 1f4c53e

Please sign in to comment.