algoliasearch 1.2.3 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c168df1007c65f3a05fdac4a6d85abb0c032307b
4
- data.tar.gz: 428cd9b8e97c21fdece377ef64e5a8b78118470c
3
+ metadata.gz: 5f84365c51f1592ac0bd372b32ef668eae0831ec
4
+ data.tar.gz: 315a6fbb785510696b8a9d1717de2cf09e208fd2
5
5
  SHA512:
6
- metadata.gz: a9443ef278cfc1767212702a70f7d335f18b710f77538014c6e327e0bb165ab676f1044594a323a83718efec5e4bce00efb2dd2efc209f48d2143984260a06c5
7
- data.tar.gz: 9ded465bc3d8f4486c96693ea14cfecb6f0ba2a4249931f8c15fae518f3ba2bf82cd6827b0da0b9462c305a799b2fc86e7a0b6a677269dd43ba8d3adff5445da
6
+ metadata.gz: 3e4bf583e3651c8b02c76e8bc6a50c038c54ab40766bc14ad1ca8ad6f8608e90984827aa4f8a5474d956af1ac4ebf9e5ff48e93696132fd12bb229769ad193e3
7
+ data.tar.gz: 6adcdf51f0a2702b5a7adbdebae0387a6d05a2c6957a44cdb388e37c0650aba41df48223ab110dccbaf13b7b53f39f16a5b211b5bbcc991e9d57e1303b7fb49d
data/ChangeLog CHANGED
@@ -1,5 +1,9 @@
1
1
  CHANGELOG
2
2
 
3
+ 2014-02-21 1.2.4
4
+
5
+ * Added delete_objects
6
+
3
7
  2014-02-10 1.2.3
4
8
 
5
9
  * add_object: POST request if objectID is nil OR empty
data/README.md CHANGED
@@ -19,6 +19,7 @@ Algolia’s Search API makes it easy to deliver a great search experience in you
19
19
 
20
20
  This Ruby client let you easily use the Algolia Search API from your backend. It wraps [Algolia's REST API](http://www.algolia.com/doc/rest_api).
21
21
 
22
+
22
23
  [![Build Status](https://travis-ci.org/algolia/algoliasearch-client-ruby.png?branch=master)](https://travis-ci.org/algolia/algoliasearch-client-ruby) [![Gem Version](https://badge.fury.io/rb/algoliasearch.png)](http://badge.fury.io/rb/algoliasearch) [![Code Climate](https://codeclimate.com/github/algolia/algoliasearch-client-ruby.png)](https://codeclimate.com/github/algolia/algoliasearch-client-ruby) [![Coverage Status](https://coveralls.io/repos/algolia/algoliasearch-client-ruby/badge.png)](https://coveralls.io/r/algolia/algoliasearch-client-ruby)
23
24
 
24
25
 
@@ -192,6 +193,8 @@ index.partial_update_object({"city" => "San Francisco",
192
193
  "objectID" => "myID"})
193
194
  ```
194
195
 
196
+
197
+
195
198
  Search
196
199
  -------------
197
200
  **Opening note:** If you are building a web application, you may be more interested in using our [javascript client](https://github.com/algolia/algoliasearch-client-js) to send queries. It brings two benefits: (i) your users get a better response time by avoiding to go through your servers, and (ii) it will offload your servers of unnecessary tasks.
@@ -220,7 +223,7 @@ You can use the following optional arguments:
220
223
 
221
224
  #### Geo-search parameters
222
225
 
223
- * **aroundLatLng**: search for entries around a given latitude/longitude (specified as two floats separated by a comma).<br/>For example `aroundLatLng=47.316669,5.016670`).<br/>You can specify the maximum distance in meters with the **aroundRadius** parameter (in meters) and the precision for ranking with **aroundPrecision** (for example if you set aroundPrecision=100, two objects that are distant of less than 100m will be considered as identical for "geo" ranking parameter).<br/>At indexing, you should specify geoloc of an object with the _geoloc attribute (in the form `{"_geoloc":{"lat":48.853409, "lng":2.348800}}`)
226
+ * **aroundLatLng**: search for entries around a given latitude/longitude (specified as two floats separated by a comma).<br/>For example `aroundLatLng=47.316669,5.016670`).<br/>You can specify the maximum distance in meters with the **aroundRadius** parameter (in meters) and the precision for ranking with **aroundPrecision** (for example if you set aroundPrecision=100, two objects that are distant of less than 100m will be considered as identical for "geo" ranking parameter).<br/>At indexing, you should specify geoloc of an object with the `_geoloc` attribute (in the form `{"_geoloc":{"lat":48.853409, "lng":2.348800}}`)
224
227
  * **insideBoundingBox**: search entries inside a given area defined by the two extreme points of a rectangle (defined by 4 floats: p1Lat,p1Lng,p2Lat,p2Lng).<br/>For example `insideBoundingBox=47.3165,4.9665,47.3424,5.0201`).<br/>At indexing, you should specify geoloc of an object with the _geoloc attribute (in the form `{"_geoloc":{"lat":48.853409, "lng":2.348800}}`)
225
228
 
226
229
  #### Parameters to control results content
@@ -244,6 +247,7 @@ You can use the following optional arguments:
244
247
  #### Faceting parameters
245
248
  * **facetFilters**: filter the query by a list of facets. Facets are separated by commas and each facet is encoded as `attributeName:value`. To OR facets, you must add parentheses. For example: `facetFilters=(category:Book,category:Movie),author:John%20Doe`. You can also use a string array encoding (for example `[["category:Book","category:Movie"],"author:John%20Doe"]`).
246
249
  * **facets**: List of object attributes that you want to use for faceting. <br/>Attributes are separated with a comma (for example `"category,author"` ). You can also use a JSON string array encoding (for example `["category","author"]` ). Only attributes that have been added in **attributesForFaceting** index setting can be used in this parameter. You can also use `*` to perform faceting on all attributes specified in **attributesForFaceting**.
250
+ * **maxValuesPerFacet**: Limit the number of facet values returned for each facet. For example: `maxValuesPerFacet=10` will retrieve max 10 values per facet.
247
251
 
248
252
  #### Distinct parameter
249
253
  * **distinct**: If set to 1, enable the distinct feature (disabled by default) if the `attributeForDistinct` index setting is set. This feature is similar to the SQL "distinct" keyword: when enabled in a query with the `distinct=1` parameter, all hits containing a duplicate value for the attributeForDistinct attribute are removed from results. For example, if the chosen attribute is `show_name` and several hits have the same value for `show_name`, then only the best one is kept and others are removed.
@@ -289,6 +293,8 @@ The server response will look like:
289
293
  }
290
294
  ```
291
295
 
296
+
297
+
292
298
  Get an object
293
299
  -------------
294
300
 
@@ -409,6 +415,7 @@ You may want to perform multiple operations with one API call to reduce latency.
409
415
  We expose three methods to perform batch:
410
416
  * `add_objects`: add an array of object using automatic `objectID` assignement
411
417
  * `save_objects`: add or update an array of object that contains an `objectID` attribute
418
+ * `delete_objects`: delete an array of objectIDs
412
419
  * `partial_update_objects`: partially update an array of objects that contain an `objectID` attribute (only specified attributes will be updated, other will remain unchanged)
413
420
 
414
421
  Example using automatic `objectID` assignement:
@@ -429,6 +436,11 @@ res = index.save_objects([{"firstname" => "Jimmie",
429
436
  "objectID" => "myID2"}])
430
437
  ```
431
438
 
439
+ Example that delete a set of records:
440
+ ```ruby
441
+ res = index.delete_objects(["myID1", "myID2"])
442
+ ```
443
+
432
444
  Example that update only the `firstname` attribute:
433
445
  ```ruby
434
446
  res = index.partial_update_objects([{"firstname" => "Jimmie",
@@ -6,12 +6,12 @@
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "algoliasearch"
9
- s.version = "1.2.3"
9
+ s.version = "1.2.4"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Algolia"]
14
- s.date = "2014-01-11"
14
+ s.date = "2014-02-21"
15
15
  s.description = "A simple Ruby client for the algolia.com REST API"
16
16
  s.email = "contact@algolia.com"
17
17
  s.extra_rdoc_files = [
data/lib/algolia/index.rb CHANGED
@@ -179,7 +179,7 @@ module Algolia
179
179
  Algolia.client.put(Protocol.object_uri(name, get_objectID(obj, objectID)), obj.to_json)
180
180
  end
181
181
 
182
- # Override the content of object and wait indexing
182
+ # Override the content of object and wait end of indexing
183
183
  #
184
184
  # @param obj the object to save
185
185
  # @param objectID the associated objectID, if nil 'obj' must contain an 'objectID' key
@@ -198,7 +198,7 @@ module Algolia
198
198
  batch build_batch('updateObject', objs, true)
199
199
  end
200
200
 
201
- # Override the content of several objects and wait indexing
201
+ # Override the content of several objects and wait end of indexing
202
202
  #
203
203
  # @param objs the array of objects to save, each object must contain an objectID attribute
204
204
  #
@@ -228,7 +228,7 @@ module Algolia
228
228
  end
229
229
 
230
230
  #
231
- # Partially Override the content of several objects
231
+ # Partially Override the content of several objects and wait end of indexing
232
232
  #
233
233
  # @param objs an array of objects to update (each object must contains a objectID attribute)
234
234
  #
@@ -270,6 +270,27 @@ module Algolia
270
270
  return res
271
271
  end
272
272
 
273
+ #
274
+ # Delete several objects
275
+ #
276
+ # @param objs an array of objectIDs
277
+ #
278
+ def delete_objects(objs)
279
+ check_array objs
280
+ batch build_batch('deleteObject', objs.map { |objectID| { objectID: objectID } }, false)
281
+ end
282
+
283
+ #
284
+ # Delete several objects and wait end of indexing
285
+ #
286
+ # @param objs an array of objectIDs
287
+ #
288
+ def delete_objects!(objs)
289
+ res = delete_objects(objs)
290
+ wait_task(res["taskID"])
291
+ return res
292
+ end
293
+
273
294
  #
274
295
  # Delete the index content
275
296
  #
data/spec/client_spec.rb CHANGED
@@ -152,7 +152,17 @@ describe 'Client' do
152
152
  @index.add_object!({:firstname => "Robert"})
153
153
  res = @index.search('')
154
154
  @index.search('')['nbHits'].should eq(1)
155
- object = @index.delete_object!(res['hits'][0]['objectID'])
155
+ @index.delete_object!(res['hits'][0]['objectID'])
156
+ @index.search('')['nbHits'].should eq(0)
157
+ end
158
+
159
+ it "should delete several objects" do
160
+ @index.clear
161
+ @index.add_object!({:firstname => "Robert1"})
162
+ @index.add_object!({:firstname => "Robert2"})
163
+ res = @index.search('')
164
+ @index.search('')['nbHits'].should eq(2)
165
+ @index.delete_objects!(res['hits'].map { |h| h['objectID'] })
156
166
  @index.search('')['nbHits'].should eq(0)
157
167
  end
158
168
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: algoliasearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Algolia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-11 00:00:00.000000000 Z
11
+ date: 2014-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient