Skip to content

Commit b1a07af

Browse files
committed
Add field statistics
1 parent da2458d commit b1a07af

File tree

4 files changed

+27
-1
lines changed

4 files changed

+27
-1
lines changed

README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ Use the following function to get more or less facets.
209209
client.setNumberOfFacets(20);
210210
```
211211

212-
#### Numeric range facets
212+
#### Numerical range facets
213213
Group numerical custom fields into range buckets.
214214
```js
215215
// Define ranges. E.g. products with price $0-$100, $100-$200, and over $200 (from value is inclusive, to value is exclusive)
@@ -223,6 +223,14 @@ var ranges = [
223223
client.addRangeFacet('custom_fields.price', ranges);
224224
```
225225

226+
### Field statistics
227+
Get the minimum, maximum, and average values of a numerical or date-based custom field. The information
228+
is handy for applications like range filtering.
229+
```js
230+
// Search response will have fieldStats element with information like {min: 1230, max: 1590, avg: 1382}
231+
client.addStatsField('custom_fields.price');
232+
```
233+
226234
### Search analytics
227235
#### Send search event to analytics
228236
When search is executed, send the event to your AddSearch Analytics Dashboard.

src/apifetch.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,14 @@ var executeApiFetch = function(sitekey, type, settings, cb, fuzzyRetry) {
101101
}
102102

103103

104+
// Stats fields
105+
if (settings.statsFields) {
106+
for (var i = 0; i<settings.statsFields.length; i++) {
107+
qs = qs + '&fieldStat=' + settings.statsFields[i];
108+
}
109+
}
110+
111+
104112
// Personalization events
105113
if (settings.personalizationEvents && Array.isArray(settings.personalizationEvents)) {
106114
for (var i = 0; i<settings.personalizationEvents.length; i++) {

src/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ var client = function(sitekey) {
110110
this.setAutocompleteSize = function(size) { this.settings.setAutocompleteSize(size); }
111111
this.addFacetField = function(fieldName) { this.settings.addFacetField(fieldName); }
112112
this.addRangeFacet = function(field, ranges) { this.settings.addRangeFacet(field, ranges); }
113+
this.addStatsField = function(field) { this.settings.addStatsField(field); }
113114
this.setNumberOfFacets = function(numFacets) { this.settings.setNumberOfFacets(numFacets); }
114115
this.setResultType = function(type) { this.settings.setResultType(type); }
115116
this.setPersonalizationEvents = function(events) { this.settings.setPersonalizationEvents(events); }

src/settings.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,15 @@ var settings = function() {
154154
});
155155
}
156156

157+
this.addStatsField = function(field) {
158+
if (!this.settings.statsFields) {
159+
this.settings.statsFields = [];
160+
}
161+
if (this.settings.statsFields.indexOf(field) === -1) {
162+
this.settings.statsFields.push(field);
163+
}
164+
}
165+
157166
this.setNumberOfFacets = function(numFacets) {
158167
this.settings.numFacets = numFacets;
159168
}

0 commit comments

Comments
 (0)