Skip to content

Commit 9bc3479

Browse files
authored
Merge pull request #10 from AddSearch/range-facets
Add range facets
2 parents 583cd96 + a3674c6 commit 9bc3479

File tree

4 files changed

+32
-0
lines changed

4 files changed

+32
-0
lines changed

README.md

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

212+
#### Numeric range facets
213+
Group numerical custom fields into range buckets.
214+
```js
215+
// Define ranges. E.g. products with price $0-$100, $100-$200, and over $200 (from value is inclusive, to value is exclusive)
216+
var ranges = [
217+
{'to': 100},
218+
{'from': 100, 'to': 200},
219+
{'from': 200}
220+
];
221+
222+
// Parameters: field name, range array
223+
client.addRangeFacet('custom_fields.price', ranges);
224+
```
225+
212226
### Search analytics
213227
#### Send search event to analytics
214228
When search is executed, send the event to your AddSearch Analytics Dashboard.

src/apifetch.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,13 @@ var executeApiFetch = function(sitekey, type, settings, cb, fuzzyRetry) {
9494
}
9595
}
9696

97+
98+
// Range facets
99+
if (settings.rangeFacets) {
100+
qs = qs + '&rangeFacets=' + JSON.stringify(settings.rangeFacets);
101+
}
102+
103+
97104
// Personalization events
98105
if (settings.personalizationEvents && Array.isArray(settings.personalizationEvents)) {
99106
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
@@ -109,6 +109,7 @@ var client = function(sitekey) {
109109
this.setSuggestionsSize = function(size) { this.settings.setSuggestionsSize(size); }
110110
this.setAutocompleteSize = function(size) { this.settings.setAutocompleteSize(size); }
111111
this.addFacetField = function(fieldName) { this.settings.addFacetField(fieldName); }
112+
this.addRangeFacet = function(field, ranges) { this.settings.addRangeFacet(field, ranges); }
112113
this.setNumberOfFacets = function(numFacets) { this.settings.setNumberOfFacets(numFacets); }
113114
this.setResultType = function(type) { this.settings.setResultType(type); }
114115
this.setPersonalizationEvents = function(events) { this.settings.setPersonalizationEvents(events); }

src/settings.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,16 @@ var settings = function() {
144144
}
145145
}
146146

147+
this.addRangeFacet = function(field, ranges) {
148+
if (!this.settings.rangeFacets) {
149+
this.settings.rangeFacets = [];
150+
}
151+
this.settings.rangeFacets.push({
152+
field: field,
153+
ranges: ranges
154+
});
155+
}
156+
147157
this.setNumberOfFacets = function(numFacets) {
148158
this.settings.numFacets = numFacets;
149159
}

0 commit comments

Comments
 (0)