-
Notifications
You must be signed in to change notification settings - Fork 733
/
Term.php
148 lines (135 loc) · 3.52 KB
/
Term.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<?php
namespace Elastica\Suggest;
/**
* Class Term.
*
* @link https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-term.html
*/
class Term extends AbstractSuggest
{
const SORT_SCORE = 'score';
const SORT_FREQUENCY = 'frequency';
const SUGGEST_MODE_MISSING = 'missing';
const SUGGEST_MODE_POPULAR = 'popular';
const SUGGEST_MODE_ALWAYS = 'always';
/**
* @param string $analyzer
*
* @return $this
*/
public function setAnalyzer($analyzer)
{
return $this->setParam('analyzer', $analyzer);
}
/**
* @param string $sort see SORT_* constants for options
*
* @return $this
*/
public function setSort($sort)
{
return $this->setParam('sort', $sort);
}
/**
* @param string $mode see SUGGEST_MODE_* constants for options
*
* @return $this
*/
public function setSuggestMode($mode)
{
return $this->setParam('suggest_mode', $mode);
}
/**
* If true, suggest terms will be lower cased after text analysis.
*
* @param bool $lowercase
*
* @return $this
*/
public function setLowercaseTerms($lowercase = true)
{
return $this->setParam('lowercase_terms', (bool) $lowercase);
}
/**
* Set the maximum edit distance candidate suggestions can have in order to be considered as a suggestion.
*
* @param int $max Either 1 or 2. Any other value will result in an error.
*
* @return $this
*/
public function setMaxEdits($max)
{
return $this->setParam('max_edits', (int) $max);
}
/**
* The number of minimum prefix characters that must match in order to be a suggestion candidate.
*
* @param int $length Defaults to 1.
*
* @return $this
*/
public function setPrefixLength($length)
{
return $this->setParam('prefix_len', (int) $length);
}
/**
* The minimum length a suggest text term must have in order to be included.
*
* @param int $length Defaults to 4.
*
* @return $this
*/
public function setMinWordLength($length)
{
return $this->setParam('min_word_length', (int) $length);
}
/**
* @param int $max Defaults to 5.
*
* @return $this
*/
public function setMaxInspections($max)
{
return $this->setParam('max_inspections', $max);
}
/**
* Set the minimum number of documents in which a suggestion should appear.
*
* @param int|float $min Defaults to 0. If the value is greater than 1, it must be a whole number.
*
* @return $this
*/
public function setMinDocFrequency($min)
{
return $this->setParam('min_doc_freq', $min);
}
/**
* Set the maximum number of documents in which a suggest text token can exist in order to be included.
*
* @param float $max
*
* @return $this
*/
public function setMaxTermFrequency($max)
{
return $this->setParam('max_term_freq', $max);
}
/**
* Which string distance implementation to use for comparing how similar suggested terms are.
* Five possible values can be specified:.
*
* - internal
* - damerau_levenshtein
* - levenshtein
* - jaro_winkler
* - ngram
*
* @param string $distanceAlgrorithm
*
* @return $this
*/
public function setStringDistanceAlgorithm($distanceAlgorithm)
{
return $this->setParam('string_distance', $distanceAlgorithm);
}
}