1<?php 2 3namespace Elastica\Query; 4 5/** 6 * Wildcard query. 7 * 8 * @author Nicolas Ruflin <spam@ruflin.com> 9 * 10 * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html 11 */ 12class Wildcard extends AbstractQuery 13{ 14 /** 15 * Rewrite methods: @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-term-rewrite.html. 16 */ 17 public const REWRITE_CONSTANT_SCORE = 'constant_score'; 18 public const REWRITE_CONSTANT_SCORE_BOOLEAN = 'constant_score_boolean'; 19 public const REWRITE_SCORING_BOOLEAN = 'scoring_boolean'; 20 21 /** 22 * @var string 23 */ 24 private $field; 25 26 public function __construct(string $field, string $value, float $boost = 1.0) 27 { 28 $this->field = $field; 29 30 $this->setParam($field, [ 31 'value' => $value, 32 'boost' => $boost, 33 ]); 34 } 35 36 public function getField(): string 37 { 38 return $this->field; 39 } 40 41 public function setValue(string $value): self 42 { 43 $data = $this->getParam($this->field); 44 $this->setParam($this->field, \array_merge($data, ['value' => $value])); 45 46 return $this; 47 } 48 49 public function setBoost(float $boost): self 50 { 51 $data = $this->getParam($this->field); 52 $this->setParam($this->field, \array_merge($data, ['boost' => $boost])); 53 54 return $this; 55 } 56 57 /** 58 * Set the method used to rewrite the query. 59 * Use one of the Wildcard::REWRITE_* constants, or provide your own. 60 * 61 * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-term-rewrite.html 62 */ 63 public function setRewrite(string $rewriteMode): self 64 { 65 $data = $this->getParam($this->field); 66 $this->setParam($this->field, \array_merge($data, ['rewrite' => $rewriteMode])); 67 68 return $this; 69 } 70 71 /** 72 * @see https://www.elastic.co/guide/en/elasticsearch/reference/7.10/query-dsl-wildcard-query.html#wildcard-query-field-params 73 */ 74 public function setCaseInsensitive(bool $caseInsensitive): self 75 { 76 $data = $this->getParam($this->field); 77 $this->setParam($this->field, \array_merge($data, ['case_insensitive' => $caseInsensitive])); 78 79 return $this; 80 } 81} 82