algolia 2.3.4 → 3.0.0.alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (602) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -93
  3. data/Gemfile +1 -14
  4. data/Gemfile.lock +64 -0
  5. data/README.md +4 -6
  6. data/Rakefile +0 -39
  7. data/algolia.gemspec +24 -39
  8. data/lib/algolia/api/abtesting_client.rb +418 -0
  9. data/lib/algolia/api/analytics_client.rb +1294 -0
  10. data/lib/algolia/api/ingestion_client.rb +1659 -0
  11. data/lib/algolia/api/insights_client.rb +252 -0
  12. data/lib/algolia/api/monitoring_client.rb +555 -0
  13. data/lib/algolia/api/personalization_client.rb +365 -0
  14. data/lib/algolia/api/query_suggestions_client.rb +491 -0
  15. data/lib/algolia/api/recommend_client.rb +460 -0
  16. data/lib/algolia/api/search_client.rb +2723 -0
  17. data/lib/algolia/api_client.rb +153 -0
  18. data/lib/algolia/api_error.rb +48 -0
  19. data/lib/algolia/configuration.rb +41 -0
  20. data/lib/algolia/logger_helper.rb +1 -1
  21. data/lib/algolia/models/abtesting/ab_test.rb +332 -0
  22. data/lib/algolia/models/abtesting/ab_test_response.rb +219 -0
  23. data/lib/algolia/models/abtesting/ab_tests_variant.rb +217 -0
  24. data/lib/algolia/models/abtesting/ab_tests_variant_search_params.rb +236 -0
  25. data/lib/algolia/models/abtesting/add_ab_tests_request.rb +239 -0
  26. data/lib/algolia/models/abtesting/add_ab_tests_variant.rb +96 -0
  27. data/lib/algolia/models/abtesting/currencies_value.rb +223 -0
  28. data/lib/algolia/models/abtesting/custom_search_params.rb +195 -0
  29. data/lib/algolia/models/abtesting/error_base.rb +196 -0
  30. data/lib/algolia/models/abtesting/filter_effects.rb +202 -0
  31. data/lib/algolia/models/abtesting/filter_effects_empty_search.rb +204 -0
  32. data/lib/algolia/models/abtesting/filter_effects_outliers.rb +204 -0
  33. data/lib/algolia/models/abtesting/list_ab_tests_response.rb +221 -0
  34. data/lib/algolia/models/abtesting/variant.rb +399 -0
  35. data/lib/algolia/models/analytics/average_click_event.rb +219 -0
  36. data/lib/algolia/models/analytics/click_position.rb +209 -0
  37. data/lib/algolia/models/analytics/click_through_rate_event.rb +249 -0
  38. data/lib/algolia/models/analytics/conversion_rate_event.rb +249 -0
  39. data/lib/algolia/models/analytics/direction.rb +33 -0
  40. data/lib/algolia/models/analytics/error_base.rb +196 -0
  41. data/lib/algolia/models/analytics/get_average_click_position_response.rb +221 -0
  42. data/lib/algolia/models/analytics/get_click_positions_response.rb +215 -0
  43. data/lib/algolia/models/analytics/get_click_through_rate_response.rb +251 -0
  44. data/lib/algolia/models/analytics/get_conversation_rate_response.rb +251 -0
  45. data/lib/algolia/models/analytics/get_no_click_rate_response.rb +251 -0
  46. data/lib/algolia/models/analytics/get_no_results_rate_response.rb +251 -0
  47. data/lib/algolia/models/analytics/get_searches_count_response.rb +209 -0
  48. data/lib/algolia/models/analytics/get_searches_no_clicks_response.rb +197 -0
  49. data/lib/algolia/models/analytics/get_searches_no_results_response.rb +197 -0
  50. data/lib/algolia/models/analytics/get_status_response.rb +195 -0
  51. data/lib/algolia/models/analytics/get_top_countries_response.rb +197 -0
  52. data/lib/algolia/models/analytics/get_top_filter_attribute.rb +207 -0
  53. data/lib/algolia/models/analytics/get_top_filter_attributes_response.rb +197 -0
  54. data/lib/algolia/models/analytics/get_top_filter_for_attribute.rb +231 -0
  55. data/lib/algolia/models/analytics/get_top_filter_for_attribute_response.rb +197 -0
  56. data/lib/algolia/models/analytics/get_top_filters_no_results_response.rb +197 -0
  57. data/lib/algolia/models/analytics/get_top_filters_no_results_value.rb +219 -0
  58. data/lib/algolia/models/analytics/get_top_filters_no_results_values.rb +209 -0
  59. data/lib/algolia/models/analytics/get_top_hits_response.rb +96 -0
  60. data/lib/algolia/models/analytics/get_top_searches_response.rb +96 -0
  61. data/lib/algolia/models/analytics/get_users_count_response.rb +209 -0
  62. data/lib/algolia/models/analytics/no_click_rate_event.rb +249 -0
  63. data/lib/algolia/models/analytics/no_results_rate_event.rb +249 -0
  64. data/lib/algolia/models/analytics/order_by.rb +35 -0
  65. data/lib/algolia/models/analytics/search_event.rb +207 -0
  66. data/lib/algolia/models/analytics/search_no_click_event.rb +219 -0
  67. data/lib/algolia/models/analytics/search_no_result_event.rb +219 -0
  68. data/lib/algolia/models/analytics/top_country.rb +207 -0
  69. data/lib/algolia/models/analytics/top_hit.rb +207 -0
  70. data/lib/algolia/models/analytics/top_hit_with_analytics.rb +285 -0
  71. data/lib/algolia/models/analytics/top_hits_response.rb +197 -0
  72. data/lib/algolia/models/analytics/top_hits_response_with_analytics.rb +197 -0
  73. data/lib/algolia/models/analytics/top_search.rb +219 -0
  74. data/lib/algolia/models/analytics/top_search_with_analytics.rb +309 -0
  75. data/lib/algolia/models/analytics/top_searches_response.rb +197 -0
  76. data/lib/algolia/models/analytics/top_searches_response_with_analytics.rb +197 -0
  77. data/lib/algolia/models/analytics/user_with_date.rb +207 -0
  78. data/lib/algolia/models/ingestion/action_type.rb +34 -0
  79. data/lib/algolia/models/ingestion/auth_algolia.rb +207 -0
  80. data/lib/algolia/models/ingestion/auth_algolia_partial.rb +203 -0
  81. data/lib/algolia/models/ingestion/auth_api_key.rb +195 -0
  82. data/lib/algolia/models/ingestion/auth_api_key_partial.rb +193 -0
  83. data/lib/algolia/models/ingestion/auth_basic.rb +206 -0
  84. data/lib/algolia/models/ingestion/auth_basic_partial.rb +202 -0
  85. data/lib/algolia/models/ingestion/auth_google_service_account.rb +208 -0
  86. data/lib/algolia/models/ingestion/auth_google_service_account_partial.rb +204 -0
  87. data/lib/algolia/models/ingestion/auth_input.rb +99 -0
  88. data/lib/algolia/models/ingestion/auth_input_partial.rb +99 -0
  89. data/lib/algolia/models/ingestion/auth_o_auth.rb +220 -0
  90. data/lib/algolia/models/ingestion/auth_o_auth_partial.rb +214 -0
  91. data/lib/algolia/models/ingestion/authentication.rb +283 -0
  92. data/lib/algolia/models/ingestion/authentication_create.rb +249 -0
  93. data/lib/algolia/models/ingestion/authentication_create_response.rb +220 -0
  94. data/lib/algolia/models/ingestion/authentication_search.rb +197 -0
  95. data/lib/algolia/models/ingestion/authentication_sort_keys.rb +36 -0
  96. data/lib/algolia/models/ingestion/authentication_type.rb +36 -0
  97. data/lib/algolia/models/ingestion/authentication_update.rb +243 -0
  98. data/lib/algolia/models/ingestion/authentication_update_response.rb +220 -0
  99. data/lib/algolia/models/ingestion/big_commerce_channel.rb +207 -0
  100. data/lib/algolia/models/ingestion/big_commerce_metafield.rb +207 -0
  101. data/lib/algolia/models/ingestion/big_query_data_type.rb +33 -0
  102. data/lib/algolia/models/ingestion/delete_response.rb +195 -0
  103. data/lib/algolia/models/ingestion/destination.rb +283 -0
  104. data/lib/algolia/models/ingestion/destination_create.rb +250 -0
  105. data/lib/algolia/models/ingestion/destination_create_response.rb +220 -0
  106. data/lib/algolia/models/ingestion/destination_index_name.rb +238 -0
  107. data/lib/algolia/models/ingestion/destination_index_prefix.rb +195 -0
  108. data/lib/algolia/models/ingestion/destination_input.rb +96 -0
  109. data/lib/algolia/models/ingestion/destination_search.rb +197 -0
  110. data/lib/algolia/models/ingestion/destination_sort_keys.rb +35 -0
  111. data/lib/algolia/models/ingestion/destination_type.rb +34 -0
  112. data/lib/algolia/models/ingestion/destination_update.rb +243 -0
  113. data/lib/algolia/models/ingestion/destination_update_response.rb +220 -0
  114. data/lib/algolia/models/ingestion/docker_image_type.rb +34 -0
  115. data/lib/algolia/models/ingestion/docker_registry.rb +33 -0
  116. data/lib/algolia/models/ingestion/docker_source_discover.rb +207 -0
  117. data/lib/algolia/models/ingestion/docker_source_streams.rb +196 -0
  118. data/lib/algolia/models/ingestion/error_base.rb +196 -0
  119. data/lib/algolia/models/ingestion/event.rb +311 -0
  120. data/lib/algolia/models/ingestion/event_sort_keys.rb +34 -0
  121. data/lib/algolia/models/ingestion/event_status.rb +37 -0
  122. data/lib/algolia/models/ingestion/event_type.rb +35 -0
  123. data/lib/algolia/models/ingestion/list_authentications_response.rb +207 -0
  124. data/lib/algolia/models/ingestion/list_destinations_response.rb +207 -0
  125. data/lib/algolia/models/ingestion/list_events_response.rb +218 -0
  126. data/lib/algolia/models/ingestion/list_sources_response.rb +207 -0
  127. data/lib/algolia/models/ingestion/list_tasks_response.rb +208 -0
  128. data/lib/algolia/models/ingestion/mapping_type_csv.rb +36 -0
  129. data/lib/algolia/models/ingestion/method_type.rb +33 -0
  130. data/lib/algolia/models/ingestion/on_demand_date_utils_input.rb +208 -0
  131. data/lib/algolia/models/ingestion/on_demand_trigger.rb +227 -0
  132. data/lib/algolia/models/ingestion/on_demand_trigger_input.rb +217 -0
  133. data/lib/algolia/models/ingestion/on_demand_trigger_type.rb +32 -0
  134. data/lib/algolia/models/ingestion/order_keys.rb +33 -0
  135. data/lib/algolia/models/ingestion/pagination.rb +227 -0
  136. data/lib/algolia/models/ingestion/platform.rb +33 -0
  137. data/lib/algolia/models/ingestion/platform_none.rb +32 -0
  138. data/lib/algolia/models/ingestion/platform_with_none.rb +96 -0
  139. data/lib/algolia/models/ingestion/record_type.rb +33 -0
  140. data/lib/algolia/models/ingestion/run.rb +359 -0
  141. data/lib/algolia/models/ingestion/run_list_response.rb +218 -0
  142. data/lib/algolia/models/ingestion/run_outcome.rb +34 -0
  143. data/lib/algolia/models/ingestion/run_progress.rb +201 -0
  144. data/lib/algolia/models/ingestion/run_reason_code.rb +38 -0
  145. data/lib/algolia/models/ingestion/run_response.rb +208 -0
  146. data/lib/algolia/models/ingestion/run_sort_keys.rb +34 -0
  147. data/lib/algolia/models/ingestion/run_status.rb +36 -0
  148. data/lib/algolia/models/ingestion/run_type.rb +34 -0
  149. data/lib/algolia/models/ingestion/schedule_date_utils_input.rb +214 -0
  150. data/lib/algolia/models/ingestion/schedule_trigger.rb +251 -0
  151. data/lib/algolia/models/ingestion/schedule_trigger_input.rb +229 -0
  152. data/lib/algolia/models/ingestion/schedule_trigger_type.rb +32 -0
  153. data/lib/algolia/models/ingestion/source.rb +282 -0
  154. data/lib/algolia/models/ingestion/source_big_commerce.rb +235 -0
  155. data/lib/algolia/models/ingestion/source_big_query.rb +278 -0
  156. data/lib/algolia/models/ingestion/source_commercetools.rb +238 -0
  157. data/lib/algolia/models/ingestion/source_create.rb +248 -0
  158. data/lib/algolia/models/ingestion/source_create_response.rb +218 -0
  159. data/lib/algolia/models/ingestion/source_csv.rb +276 -0
  160. data/lib/algolia/models/ingestion/source_docker.rb +261 -0
  161. data/lib/algolia/models/ingestion/source_input.rb +100 -0
  162. data/lib/algolia/models/ingestion/source_json.rb +236 -0
  163. data/lib/algolia/models/ingestion/source_search.rb +196 -0
  164. data/lib/algolia/models/ingestion/source_sort_keys.rb +35 -0
  165. data/lib/algolia/models/ingestion/source_type.rb +37 -0
  166. data/lib/algolia/models/ingestion/source_update.rb +211 -0
  167. data/lib/algolia/models/ingestion/source_update_commercetools.rb +207 -0
  168. data/lib/algolia/models/ingestion/source_update_docker.rb +246 -0
  169. data/lib/algolia/models/ingestion/source_update_input.rb +99 -0
  170. data/lib/algolia/models/ingestion/source_update_response.rb +218 -0
  171. data/lib/algolia/models/ingestion/subscription_trigger.rb +217 -0
  172. data/lib/algolia/models/ingestion/subscription_trigger_type.rb +32 -0
  173. data/lib/algolia/models/ingestion/task.rb +334 -0
  174. data/lib/algolia/models/ingestion/task_create.rb +299 -0
  175. data/lib/algolia/models/ingestion/task_create_response.rb +208 -0
  176. data/lib/algolia/models/ingestion/task_create_trigger.rb +97 -0
  177. data/lib/algolia/models/ingestion/task_input.rb +96 -0
  178. data/lib/algolia/models/ingestion/task_search.rb +196 -0
  179. data/lib/algolia/models/ingestion/task_sort_keys.rb +36 -0
  180. data/lib/algolia/models/ingestion/task_update.rb +250 -0
  181. data/lib/algolia/models/ingestion/task_update_response.rb +208 -0
  182. data/lib/algolia/models/ingestion/trigger.rb +97 -0
  183. data/lib/algolia/models/ingestion/trigger_type.rb +34 -0
  184. data/lib/algolia/models/ingestion/trigger_update_input.rb +196 -0
  185. data/lib/algolia/models/ingestion/window.rb +208 -0
  186. data/lib/algolia/models/insights/add_to_cart_event.rb +32 -0
  187. data/lib/algolia/models/insights/added_to_cart_object_ids.rb +384 -0
  188. data/lib/algolia/models/insights/added_to_cart_object_ids_after_search.rb +419 -0
  189. data/lib/algolia/models/insights/click_event.rb +32 -0
  190. data/lib/algolia/models/insights/clicked_filters.rb +351 -0
  191. data/lib/algolia/models/insights/clicked_object_ids.rb +341 -0
  192. data/lib/algolia/models/insights/clicked_object_ids_after_search.rb +418 -0
  193. data/lib/algolia/models/insights/conversion_event.rb +32 -0
  194. data/lib/algolia/models/insights/converted_filters.rb +350 -0
  195. data/lib/algolia/models/insights/converted_object_ids.rb +351 -0
  196. data/lib/algolia/models/insights/converted_object_ids_after_search.rb +386 -0
  197. data/lib/algolia/models/insights/discount.rb +97 -0
  198. data/lib/algolia/models/insights/error_base.rb +196 -0
  199. data/lib/algolia/models/insights/events_items.rb +106 -0
  200. data/lib/algolia/models/insights/events_response.rb +204 -0
  201. data/lib/algolia/models/insights/insights_events.rb +215 -0
  202. data/lib/algolia/models/insights/object_data.rb +211 -0
  203. data/lib/algolia/models/insights/object_data_after_search.rb +221 -0
  204. data/lib/algolia/models/insights/price.rb +97 -0
  205. data/lib/algolia/models/insights/purchase_event.rb +32 -0
  206. data/lib/algolia/models/insights/purchased_object_ids.rb +384 -0
  207. data/lib/algolia/models/insights/purchased_object_ids_after_search.rb +419 -0
  208. data/lib/algolia/models/insights/view_event.rb +32 -0
  209. data/lib/algolia/models/insights/viewed_filters.rb +351 -0
  210. data/lib/algolia/models/insights/viewed_object_ids.rb +351 -0
  211. data/lib/algolia/models/monitoring/error_base.rb +196 -0
  212. data/lib/algolia/models/monitoring/get_inventory403_response.rb +192 -0
  213. data/lib/algolia/models/monitoring/incident.rb +225 -0
  214. data/lib/algolia/models/monitoring/incidents_inner.rb +202 -0
  215. data/lib/algolia/models/monitoring/incidents_response.rb +194 -0
  216. data/lib/algolia/models/monitoring/indexing_time_response.rb +192 -0
  217. data/lib/algolia/models/monitoring/indexing_time_response_metrics.rb +194 -0
  218. data/lib/algolia/models/monitoring/infrastructure_response.rb +192 -0
  219. data/lib/algolia/models/monitoring/infrastructure_response_metrics.rb +243 -0
  220. data/lib/algolia/models/monitoring/inventory_response.rb +194 -0
  221. data/lib/algolia/models/monitoring/latency_response.rb +192 -0
  222. data/lib/algolia/models/monitoring/latency_response_metrics.rb +194 -0
  223. data/lib/algolia/models/monitoring/metric.rb +37 -0
  224. data/lib/algolia/models/monitoring/period.rb +36 -0
  225. data/lib/algolia/models/monitoring/probes_metric.rb +203 -0
  226. data/lib/algolia/models/monitoring/region.rb +46 -0
  227. data/lib/algolia/models/monitoring/server.rb +272 -0
  228. data/lib/algolia/models/monitoring/server_status.rb +32 -0
  229. data/lib/algolia/models/monitoring/status.rb +35 -0
  230. data/lib/algolia/models/monitoring/status_response.rb +194 -0
  231. data/lib/algolia/models/monitoring/time_inner.rb +203 -0
  232. data/lib/algolia/models/monitoring/type.rb +32 -0
  233. data/lib/algolia/models/personalization/delete_user_profile_response.rb +207 -0
  234. data/lib/algolia/models/personalization/error_base.rb +196 -0
  235. data/lib/algolia/models/personalization/event_scoring.rb +219 -0
  236. data/lib/algolia/models/personalization/facet_scoring.rb +207 -0
  237. data/lib/algolia/models/personalization/get_user_token_response.rb +219 -0
  238. data/lib/algolia/models/personalization/personalization_strategy_params.rb +223 -0
  239. data/lib/algolia/models/personalization/set_personalization_strategy_response.rb +195 -0
  240. data/lib/algolia/models/query-suggestions/base_query_suggestions_configuration_response.rb +223 -0
  241. data/lib/algolia/models/query-suggestions/base_query_suggestions_configuration_with_index.rb +195 -0
  242. data/lib/algolia/models/query-suggestions/base_response.rb +203 -0
  243. data/lib/algolia/models/query-suggestions/error_base.rb +196 -0
  244. data/lib/algolia/models/query-suggestions/facet.rb +204 -0
  245. data/lib/algolia/models/query-suggestions/get_config_status200_response.rb +233 -0
  246. data/lib/algolia/models/query-suggestions/get_log_file200_response.rb +244 -0
  247. data/lib/algolia/models/query-suggestions/languages.rb +97 -0
  248. data/lib/algolia/models/query-suggestions/log_level.rb +34 -0
  249. data/lib/algolia/models/query-suggestions/query_suggestions_configuration.rb +255 -0
  250. data/lib/algolia/models/query-suggestions/query_suggestions_configuration_response.rb +315 -0
  251. data/lib/algolia/models/query-suggestions/query_suggestions_configuration_with_index.rb +275 -0
  252. data/lib/algolia/models/query-suggestions/source_index.rb +305 -0
  253. data/lib/algolia/models/recommend/advanced_syntax_features.rb +33 -0
  254. data/lib/algolia/models/recommend/alternatives_as_exact.rb +34 -0
  255. data/lib/algolia/models/recommend/anchoring.rb +35 -0
  256. data/lib/algolia/models/recommend/around_precision.rb +97 -0
  257. data/lib/algolia/models/recommend/around_precision_from_value_inner.rb +201 -0
  258. data/lib/algolia/models/recommend/around_radius.rb +97 -0
  259. data/lib/algolia/models/recommend/around_radius_all.rb +32 -0
  260. data/lib/algolia/models/recommend/automatic_facet_filter.rb +216 -0
  261. data/lib/algolia/models/recommend/automatic_facet_filters.rb +97 -0
  262. data/lib/algolia/models/recommend/base_recommend_request.rb +233 -0
  263. data/lib/algolia/models/recommend/base_recommendations_query.rb +246 -0
  264. data/lib/algolia/models/recommend/base_recommended_for_you_query.rb +234 -0
  265. data/lib/algolia/models/recommend/base_recommended_for_you_query_parameters.rb +195 -0
  266. data/lib/algolia/models/recommend/base_search_params.rb +564 -0
  267. data/lib/algolia/models/recommend/base_search_params_without_query.rb +546 -0
  268. data/lib/algolia/models/recommend/base_search_response.rb +517 -0
  269. data/lib/algolia/models/recommend/base_trending_facets_query.rb +226 -0
  270. data/lib/algolia/models/recommend/base_trending_items_query.rb +252 -0
  271. data/lib/algolia/models/recommend/condition.rb +244 -0
  272. data/lib/algolia/models/recommend/consequence.rb +239 -0
  273. data/lib/algolia/models/recommend/consequence_hide.rb +196 -0
  274. data/lib/algolia/models/recommend/consequence_params.rb +1121 -0
  275. data/lib/algolia/models/recommend/consequence_query.rb +97 -0
  276. data/lib/algolia/models/recommend/consequence_query_object.rb +207 -0
  277. data/lib/algolia/models/recommend/deleted_at_response.rb +208 -0
  278. data/lib/algolia/models/recommend/distinct.rb +97 -0
  279. data/lib/algolia/models/recommend/edit.rb +234 -0
  280. data/lib/algolia/models/recommend/edit_type.rb +33 -0
  281. data/lib/algolia/models/recommend/error_base.rb +196 -0
  282. data/lib/algolia/models/recommend/exact_on_single_word_query.rb +34 -0
  283. data/lib/algolia/models/recommend/exhaustive.rb +234 -0
  284. data/lib/algolia/models/recommend/facet_filters.rb +97 -0
  285. data/lib/algolia/models/recommend/facet_ordering.rb +205 -0
  286. data/lib/algolia/models/recommend/facets.rb +196 -0
  287. data/lib/algolia/models/recommend/facets_stats.rb +223 -0
  288. data/lib/algolia/models/recommend/get_recommend_task_response.rb +216 -0
  289. data/lib/algolia/models/recommend/get_recommendations_params.rb +198 -0
  290. data/lib/algolia/models/recommend/get_recommendations_response.rb +194 -0
  291. data/lib/algolia/models/recommend/highlight_result.rb +96 -0
  292. data/lib/algolia/models/recommend/highlight_result_option.rb +253 -0
  293. data/lib/algolia/models/recommend/ignore_plurals.rb +97 -0
  294. data/lib/algolia/models/recommend/index_settings_as_search_params.rb +723 -0
  295. data/lib/algolia/models/recommend/match_level.rb +34 -0
  296. data/lib/algolia/models/recommend/matched_geo_location.rb +213 -0
  297. data/lib/algolia/models/recommend/mixed_search_filters.rb +96 -0
  298. data/lib/algolia/models/recommend/mode.rb +33 -0
  299. data/lib/algolia/models/recommend/numeric_filters.rb +97 -0
  300. data/lib/algolia/models/recommend/optional_filters.rb +97 -0
  301. data/lib/algolia/models/recommend/params.rb +220 -0
  302. data/lib/algolia/models/recommend/personalization.rb +213 -0
  303. data/lib/algolia/models/recommend/promote.rb +96 -0
  304. data/lib/algolia/models/recommend/promote_object_id.rb +208 -0
  305. data/lib/algolia/models/recommend/promote_object_ids.rb +210 -0
  306. data/lib/algolia/models/recommend/query_type.rb +34 -0
  307. data/lib/algolia/models/recommend/ranking_info.rb +328 -0
  308. data/lib/algolia/models/recommend/re_ranking_apply_filter.rb +97 -0
  309. data/lib/algolia/models/recommend/recommend_hit.rb +271 -0
  310. data/lib/algolia/models/recommend/recommend_models.rb +35 -0
  311. data/lib/algolia/models/recommend/recommendation_models.rb +33 -0
  312. data/lib/algolia/models/recommend/recommendations_hit.rb +96 -0
  313. data/lib/algolia/models/recommend/recommendations_hits.rb +216 -0
  314. data/lib/algolia/models/recommend/recommendations_query.rb +304 -0
  315. data/lib/algolia/models/recommend/recommendations_request.rb +98 -0
  316. data/lib/algolia/models/recommend/recommendations_results.rb +553 -0
  317. data/lib/algolia/models/recommend/recommended_for_you_model.rb +32 -0
  318. data/lib/algolia/models/recommend/recommended_for_you_query.rb +292 -0
  319. data/lib/algolia/models/recommend/recommended_for_you_query_parameters.rb +1105 -0
  320. data/lib/algolia/models/recommend/redirect.rb +195 -0
  321. data/lib/algolia/models/recommend/redirect_rule_index_metadata.rb +242 -0
  322. data/lib/algolia/models/recommend/redirect_rule_index_metadata_data.rb +195 -0
  323. data/lib/algolia/models/recommend/remove_stop_words.rb +97 -0
  324. data/lib/algolia/models/recommend/remove_words_if_no_results.rb +35 -0
  325. data/lib/algolia/models/recommend/rendering_content.rb +193 -0
  326. data/lib/algolia/models/recommend/rule_response.rb +246 -0
  327. data/lib/algolia/models/recommend/rule_response_metadata.rb +193 -0
  328. data/lib/algolia/models/recommend/search_params_object.rb +1103 -0
  329. data/lib/algolia/models/recommend/search_params_query.rb +193 -0
  330. data/lib/algolia/models/recommend/search_recommend_rules_params.rb +268 -0
  331. data/lib/algolia/models/recommend/search_recommend_rules_response.rb +233 -0
  332. data/lib/algolia/models/recommend/semantic_search.rb +198 -0
  333. data/lib/algolia/models/recommend/snippet_result.rb +96 -0
  334. data/lib/algolia/models/recommend/snippet_result_option.rb +229 -0
  335. data/lib/algolia/models/recommend/sort_remaining_by.rb +34 -0
  336. data/lib/algolia/models/recommend/tag_filters.rb +97 -0
  337. data/lib/algolia/models/recommend/task_status.rb +33 -0
  338. data/lib/algolia/models/recommend/trending_facet_hit.rb +238 -0
  339. data/lib/algolia/models/recommend/trending_facets_model.rb +32 -0
  340. data/lib/algolia/models/recommend/trending_facets_query.rb +284 -0
  341. data/lib/algolia/models/recommend/trending_items_model.rb +32 -0
  342. data/lib/algolia/models/recommend/trending_items_query.rb +310 -0
  343. data/lib/algolia/models/recommend/typo_tolerance.rb +97 -0
  344. data/lib/algolia/models/recommend/typo_tolerance_enum.rb +33 -0
  345. data/lib/algolia/models/recommend/value.rb +226 -0
  346. data/lib/algolia/models/search/acl.rb +47 -0
  347. data/lib/algolia/models/search/action.rb +38 -0
  348. data/lib/algolia/models/search/add_api_key_response.rb +207 -0
  349. data/lib/algolia/models/search/advanced_syntax_features.rb +33 -0
  350. data/lib/algolia/models/search/alternatives_as_exact.rb +34 -0
  351. data/lib/algolia/models/search/anchoring.rb +35 -0
  352. data/lib/algolia/models/search/api_key.rb +272 -0
  353. data/lib/algolia/models/search/around_precision.rb +97 -0
  354. data/lib/algolia/models/search/around_precision_from_value_inner.rb +201 -0
  355. data/lib/algolia/models/search/around_radius.rb +97 -0
  356. data/lib/algolia/models/search/around_radius_all.rb +32 -0
  357. data/lib/algolia/models/search/assign_user_id_params.rb +196 -0
  358. data/lib/algolia/models/search/attribute_to_update.rb +96 -0
  359. data/lib/algolia/models/search/automatic_facet_filter.rb +216 -0
  360. data/lib/algolia/models/search/automatic_facet_filters.rb +97 -0
  361. data/lib/algolia/models/search/base_get_api_key_response.rb +205 -0
  362. data/lib/algolia/models/search/base_index_settings.rb +366 -0
  363. data/lib/algolia/models/search/base_search_params.rb +564 -0
  364. data/lib/algolia/models/search/base_search_params_without_query.rb +546 -0
  365. data/lib/algolia/models/search/base_search_response.rb +517 -0
  366. data/lib/algolia/models/search/batch_assign_user_ids_params.rb +210 -0
  367. data/lib/algolia/models/search/batch_dictionary_entries_params.rb +208 -0
  368. data/lib/algolia/models/search/batch_dictionary_entries_request.rb +227 -0
  369. data/lib/algolia/models/search/batch_params.rb +197 -0
  370. data/lib/algolia/models/search/batch_request.rb +228 -0
  371. data/lib/algolia/models/search/batch_response.rb +209 -0
  372. data/lib/algolia/models/search/batch_write_params.rb +197 -0
  373. data/lib/algolia/models/search/browse_params.rb +96 -0
  374. data/lib/algolia/models/search/browse_params_object.rb +1113 -0
  375. data/lib/algolia/models/search/browse_response.rb +568 -0
  376. data/lib/algolia/models/search/built_in_operation.rb +229 -0
  377. data/lib/algolia/models/search/built_in_operation_type.rb +38 -0
  378. data/lib/algolia/models/search/condition.rb +244 -0
  379. data/lib/algolia/models/search/consequence.rb +239 -0
  380. data/lib/algolia/models/search/consequence_hide.rb +196 -0
  381. data/lib/algolia/models/search/consequence_params.rb +1121 -0
  382. data/lib/algolia/models/search/consequence_query.rb +97 -0
  383. data/lib/algolia/models/search/consequence_query_object.rb +207 -0
  384. data/lib/algolia/models/search/created_at_response.rb +196 -0
  385. data/lib/algolia/models/search/cursor.rb +193 -0
  386. data/lib/algolia/models/search/delete_api_key_response.rb +195 -0
  387. data/lib/algolia/models/search/delete_by_params.rb +263 -0
  388. data/lib/algolia/models/search/delete_source_response.rb +195 -0
  389. data/lib/algolia/models/search/deleted_at_response.rb +208 -0
  390. data/lib/algolia/models/search/dictionary_action.rb +33 -0
  391. data/lib/algolia/models/search/dictionary_entry.rb +276 -0
  392. data/lib/algolia/models/search/dictionary_entry_state.rb +33 -0
  393. data/lib/algolia/models/search/dictionary_language.rb +194 -0
  394. data/lib/algolia/models/search/dictionary_settings_params.rb +195 -0
  395. data/lib/algolia/models/search/dictionary_type.rb +34 -0
  396. data/lib/algolia/models/search/distinct.rb +97 -0
  397. data/lib/algolia/models/search/edit.rb +234 -0
  398. data/lib/algolia/models/search/edit_type.rb +33 -0
  399. data/lib/algolia/models/search/error_base.rb +196 -0
  400. data/lib/algolia/models/search/exact_on_single_word_query.rb +34 -0
  401. data/lib/algolia/models/search/exhaustive.rb +234 -0
  402. data/lib/algolia/models/search/facet_filters.rb +97 -0
  403. data/lib/algolia/models/search/facet_hits.rb +219 -0
  404. data/lib/algolia/models/search/facet_ordering.rb +205 -0
  405. data/lib/algolia/models/search/facets.rb +196 -0
  406. data/lib/algolia/models/search/facets_stats.rb +223 -0
  407. data/lib/algolia/models/search/fetched_index.rb +313 -0
  408. data/lib/algolia/models/search/get_api_key_response.rb +301 -0
  409. data/lib/algolia/models/search/get_dictionary_settings_response.rb +194 -0
  410. data/lib/algolia/models/search/get_logs_response.rb +196 -0
  411. data/lib/algolia/models/search/get_objects_params.rb +197 -0
  412. data/lib/algolia/models/search/get_objects_request.rb +220 -0
  413. data/lib/algolia/models/search/get_objects_response.rb +197 -0
  414. data/lib/algolia/models/search/get_task_response.rb +216 -0
  415. data/lib/algolia/models/search/get_top_user_ids_response.rb +198 -0
  416. data/lib/algolia/models/search/has_pending_mappings_response.rb +207 -0
  417. data/lib/algolia/models/search/highlight_result.rb +96 -0
  418. data/lib/algolia/models/search/highlight_result_option.rb +253 -0
  419. data/lib/algolia/models/search/hit.rb +241 -0
  420. data/lib/algolia/models/search/ignore_plurals.rb +97 -0
  421. data/lib/algolia/models/search/index_settings.rb +912 -0
  422. data/lib/algolia/models/search/index_settings_as_search_params.rb +723 -0
  423. data/lib/algolia/models/search/languages.rb +221 -0
  424. data/lib/algolia/models/search/list_api_keys_response.rb +197 -0
  425. data/lib/algolia/models/search/list_clusters_response.rb +198 -0
  426. data/lib/algolia/models/search/list_indices_response.rb +207 -0
  427. data/lib/algolia/models/search/list_user_ids_response.rb +198 -0
  428. data/lib/algolia/models/search/log.rb +358 -0
  429. data/lib/algolia/models/search/log_query.rb +213 -0
  430. data/lib/algolia/models/search/log_type.rb +35 -0
  431. data/lib/algolia/models/search/match_level.rb +34 -0
  432. data/lib/algolia/models/search/matched_geo_location.rb +213 -0
  433. data/lib/algolia/models/search/mixed_search_filters.rb +96 -0
  434. data/lib/algolia/models/search/mode.rb +33 -0
  435. data/lib/algolia/models/search/multiple_batch_request.rb +240 -0
  436. data/lib/algolia/models/search/multiple_batch_response.rb +211 -0
  437. data/lib/algolia/models/search/numeric_filters.rb +97 -0
  438. data/lib/algolia/models/search/operation_index_params.rb +240 -0
  439. data/lib/algolia/models/search/operation_type.rb +33 -0
  440. data/lib/algolia/models/search/optional_filters.rb +97 -0
  441. data/lib/algolia/models/search/params.rb +220 -0
  442. data/lib/algolia/models/search/personalization.rb +213 -0
  443. data/lib/algolia/models/search/promote.rb +96 -0
  444. data/lib/algolia/models/search/promote_object_id.rb +208 -0
  445. data/lib/algolia/models/search/promote_object_ids.rb +210 -0
  446. data/lib/algolia/models/search/query_type.rb +34 -0
  447. data/lib/algolia/models/search/ranking_info.rb +328 -0
  448. data/lib/algolia/models/search/re_ranking_apply_filter.rb +97 -0
  449. data/lib/algolia/models/search/redirect.rb +195 -0
  450. data/lib/algolia/models/search/redirect_rule_index_metadata.rb +242 -0
  451. data/lib/algolia/models/search/redirect_rule_index_metadata_data.rb +195 -0
  452. data/lib/algolia/models/search/remove_stop_words.rb +97 -0
  453. data/lib/algolia/models/search/remove_user_id_response.rb +195 -0
  454. data/lib/algolia/models/search/remove_words_if_no_results.rb +35 -0
  455. data/lib/algolia/models/search/rendering_content.rb +193 -0
  456. data/lib/algolia/models/search/replace_source_response.rb +195 -0
  457. data/lib/algolia/models/search/rule.rb +249 -0
  458. data/lib/algolia/models/search/save_object_response.rb +217 -0
  459. data/lib/algolia/models/search/save_synonym_response.rb +219 -0
  460. data/lib/algolia/models/search/scope_type.rb +34 -0
  461. data/lib/algolia/models/search/search_dictionary_entries_params.rb +244 -0
  462. data/lib/algolia/models/search/search_for_facet_values_request.rb +227 -0
  463. data/lib/algolia/models/search/search_for_facet_values_response.rb +218 -0
  464. data/lib/algolia/models/search/search_for_facets.rb +1158 -0
  465. data/lib/algolia/models/search/search_for_facets_options.rb +274 -0
  466. data/lib/algolia/models/search/search_for_hits.rb +1134 -0
  467. data/lib/algolia/models/search/search_for_hits_options.rb +226 -0
  468. data/lib/algolia/models/search/search_hits.rb +223 -0
  469. data/lib/algolia/models/search/search_method_params.rb +227 -0
  470. data/lib/algolia/models/search/search_params.rb +96 -0
  471. data/lib/algolia/models/search/search_params_object.rb +1103 -0
  472. data/lib/algolia/models/search/search_params_query.rb +193 -0
  473. data/lib/algolia/models/search/search_params_string.rb +193 -0
  474. data/lib/algolia/models/search/search_query.rb +96 -0
  475. data/lib/algolia/models/search/search_response.rb +560 -0
  476. data/lib/algolia/models/search/search_responses.rb +196 -0
  477. data/lib/algolia/models/search/search_result.rb +96 -0
  478. data/lib/algolia/models/search/search_rules_params.rb +311 -0
  479. data/lib/algolia/models/search/search_rules_response.rb +233 -0
  480. data/lib/algolia/models/search/search_strategy.rb +33 -0
  481. data/lib/algolia/models/search/search_synonyms_params.rb +193 -0
  482. data/lib/algolia/models/search/search_synonyms_response.rb +212 -0
  483. data/lib/algolia/models/search/search_type_default.rb +32 -0
  484. data/lib/algolia/models/search/search_type_facet.rb +32 -0
  485. data/lib/algolia/models/search/search_user_ids_params.rb +244 -0
  486. data/lib/algolia/models/search/search_user_ids_response.rb +264 -0
  487. data/lib/algolia/models/search/semantic_search.rb +198 -0
  488. data/lib/algolia/models/search/snippet_result.rb +96 -0
  489. data/lib/algolia/models/search/snippet_result_option.rb +229 -0
  490. data/lib/algolia/models/search/sort_remaining_by.rb +34 -0
  491. data/lib/algolia/models/search/source.rb +206 -0
  492. data/lib/algolia/models/search/standard_entries.rb +224 -0
  493. data/lib/algolia/models/search/synonym_hit.rb +295 -0
  494. data/lib/algolia/models/search/synonym_type.rb +36 -0
  495. data/lib/algolia/models/search/tag_filters.rb +97 -0
  496. data/lib/algolia/models/search/task_status.rb +33 -0
  497. data/lib/algolia/models/search/time_range.rb +207 -0
  498. data/lib/algolia/models/search/typo_tolerance.rb +97 -0
  499. data/lib/algolia/models/search/typo_tolerance_enum.rb +33 -0
  500. data/lib/algolia/models/search/update_api_key_response.rb +207 -0
  501. data/lib/algolia/models/search/updated_at_response.rb +208 -0
  502. data/lib/algolia/models/search/updated_at_with_object_id_response.rb +214 -0
  503. data/lib/algolia/models/search/updated_rule_response.rb +219 -0
  504. data/lib/algolia/models/search/user_highlight_result.rb +205 -0
  505. data/lib/algolia/models/search/user_hit.rb +269 -0
  506. data/lib/algolia/models/search/user_id.rb +247 -0
  507. data/lib/algolia/models/search/value.rb +226 -0
  508. data/lib/algolia/transport/echo_requester.rb +10 -0
  509. data/lib/algolia/{http → transport/http}/http_requester.rb +24 -19
  510. data/lib/algolia/{http → transport/http}/response.rb +11 -1
  511. data/lib/algolia/transport/request_options.rb +19 -31
  512. data/lib/algolia/transport/retry_strategy.rb +5 -8
  513. data/lib/algolia/transport/stateful_host.rb +1 -2
  514. data/lib/algolia/transport/transport.rb +33 -73
  515. data/lib/algolia/user_agent.rb +4 -14
  516. data/lib/algolia/version.rb +3 -1
  517. data/lib/algolia.rb +23 -40
  518. metadata +522 -217
  519. data/.circleci/config.yml +0 -155
  520. data/.dockerignore +0 -38
  521. data/.github/ISSUE_TEMPLATE.md +0 -20
  522. data/.github/PULL_REQUEST_TEMPLATE.md +0 -22
  523. data/.gitignore +0 -40
  524. data/.rubocop.yml +0 -189
  525. data/.rubocop_todo.yml +0 -14
  526. data/CODE_OF_CONDUCT.md +0 -74
  527. data/CONTRIBUTING.MD +0 -184
  528. data/DOCKER_README.MD +0 -89
  529. data/Dockerfile +0 -7
  530. data/LICENSE +0 -21
  531. data/SECURITY.md +0 -3
  532. data/Steepfile +0 -6
  533. data/bin/console +0 -21
  534. data/bin/setup +0 -8
  535. data/lib/algolia/account_client.rb +0 -65
  536. data/lib/algolia/analytics_client.rb +0 -105
  537. data/lib/algolia/config/analytics_config.rb +0 -20
  538. data/lib/algolia/config/base_config.rb +0 -43
  539. data/lib/algolia/config/insights_config.rb +0 -20
  540. data/lib/algolia/config/personalization_config.rb +0 -20
  541. data/lib/algolia/config/recommend_config.rb +0 -6
  542. data/lib/algolia/config/recommendation_config.rb +0 -7
  543. data/lib/algolia/config/search_config.rb +0 -40
  544. data/lib/algolia/defaults.rb +0 -35
  545. data/lib/algolia/helpers.rb +0 -134
  546. data/lib/algolia/insights_client.rb +0 -238
  547. data/lib/algolia/iterators/base_iterator.rb +0 -19
  548. data/lib/algolia/iterators/object_iterator.rb +0 -28
  549. data/lib/algolia/iterators/paginator_iterator.rb +0 -46
  550. data/lib/algolia/iterators/rule_iterator.rb +0 -9
  551. data/lib/algolia/iterators/synonym_iterator.rb +0 -9
  552. data/lib/algolia/personalization_client.rb +0 -60
  553. data/lib/algolia/recommend_client.rb +0 -134
  554. data/lib/algolia/recommendation_client.rb +0 -7
  555. data/lib/algolia/responses/add_api_key_response.rb +0 -38
  556. data/lib/algolia/responses/base_response.rb +0 -9
  557. data/lib/algolia/responses/delete_api_key_response.rb +0 -40
  558. data/lib/algolia/responses/dictionary_response.rb +0 -33
  559. data/lib/algolia/responses/indexing_response.rb +0 -28
  560. data/lib/algolia/responses/multiple_batch_indexing_response.rb +0 -29
  561. data/lib/algolia/responses/multiple_response.rb +0 -45
  562. data/lib/algolia/responses/restore_api_key_response.rb +0 -36
  563. data/lib/algolia/responses/update_api_key_response.rb +0 -39
  564. data/lib/algolia/search_client.rb +0 -791
  565. data/lib/algolia/search_index.rb +0 -1059
  566. data/renovate.json +0 -5
  567. data/sig/config/algolia_config.rbs +0 -24
  568. data/sig/config/analytics_config.rbs +0 -11
  569. data/sig/config/insights_config.rbs +0 -11
  570. data/sig/config/recommendation_config.rbs +0 -11
  571. data/sig/config/search_config.rbs +0 -11
  572. data/sig/enums/call_type.rbs +0 -5
  573. data/sig/helpers.rbs +0 -12
  574. data/sig/http/http_requester.rbs +0 -17
  575. data/sig/http/response.rbs +0 -14
  576. data/sig/interfaces/_connection.rbs +0 -16
  577. data/sig/iterators/base_iterator.rbs +0 -15
  578. data/sig/iterators/object_iterator.rbs +0 -6
  579. data/sig/iterators/paginator_iterator.rbs +0 -8
  580. data/sig/iterators/rule_iterator.rbs +0 -5
  581. data/sig/iterators/synonym_iterator.rbs +0 -5
  582. data/sig/transport/request_options.rbs +0 -33
  583. data/sig/transport/stateful_host.rbs +0 -21
  584. data/test/algolia/integration/account_client_test.rb +0 -47
  585. data/test/algolia/integration/analytics_client_test.rb +0 -117
  586. data/test/algolia/integration/base_test.rb +0 -9
  587. data/test/algolia/integration/insights_client_test.rb +0 -80
  588. data/test/algolia/integration/mocks/mock_requester.rb +0 -47
  589. data/test/algolia/integration/personalization_client_test.rb +0 -30
  590. data/test/algolia/integration/recommend_client_test.rb +0 -70
  591. data/test/algolia/integration/recommendation_client_test.rb +0 -30
  592. data/test/algolia/integration/search_client_test.rb +0 -465
  593. data/test/algolia/integration/search_index_test.rb +0 -729
  594. data/test/algolia/unit/algolia_config_test.rb +0 -16
  595. data/test/algolia/unit/helpers_test.rb +0 -92
  596. data/test/algolia/unit/http_requester_test.rb +0 -27
  597. data/test/algolia/unit/retry_strategy_test.rb +0 -139
  598. data/test/algolia/unit/user_agent_test.rb +0 -16
  599. data/test/test_helper.rb +0 -121
  600. data/upgrade_guide.md +0 -603
  601. /data/lib/algolia/{enums → transport}/call_type.rb +0 -0
  602. /data/lib/algolia/{enums → transport}/retry_outcome_type.rb +0 -0
@@ -1,1059 +0,0 @@
1
- module Algolia
2
- module Search
3
- # Class Index
4
- class Index
5
- include CallType
6
- include Helpers
7
-
8
- attr_reader :name, :transporter, :config, :logger
9
-
10
- # Initialize an index
11
- #
12
- # @param name [String] name of the index
13
- # @param transporter [Object] transport object used for the connection
14
- # @param config [Config] a Config object which contains your APP_ID and API_KEY
15
- # @param logger [LoggerHelper] an optional LoggerHelper object to use
16
- #
17
- def initialize(name, transporter, config, logger = nil)
18
- @name = name
19
- @transporter = transporter
20
- @config = config
21
- @logger = logger || LoggerHelper.create
22
- end
23
-
24
- # # # # # # # # # # # # # # # # # # # # #
25
- # MISC
26
- # # # # # # # # # # # # # # # # # # # # #
27
-
28
- # Wait the publication of a task on the server.
29
- # All server task are asynchronous and you can check with this method that the task is published.
30
- #
31
- # @param task_id the id of the task returned by server
32
- # @param time_before_retry the time in milliseconds before retry (default = 100ms)
33
- # @param opts [Hash] contains extra parameters to send with your query
34
- #
35
- def wait_task(task_id, time_before_retry = Defaults::WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, opts = {})
36
- loop do
37
- status = get_task_status(task_id, opts)
38
- if status == 'published'
39
- return
40
- end
41
- sleep(time_before_retry.to_f / 1000)
42
- end
43
- end
44
-
45
- # Check the status of a task on the server.
46
- # All server task are asynchronous and you can check the status of a task with this method.
47
- #
48
- # @param task_id [Integer] the id of the task returned by server
49
- # @param opts [Hash] contains extra parameters to send with your query
50
- #
51
- def get_task_status(task_id, opts = {})
52
- res = @transporter.read(:GET, path_encode('/1/indexes/%s/task/%s', @name, task_id), {}, opts)
53
- get_option(res, 'status')
54
- end
55
-
56
- # Delete the index content
57
- #
58
- # @param opts [Hash] contains extra parameters to send with your query
59
- #
60
- def clear_objects(opts = {})
61
- response = @transporter.write(:POST, path_encode('/1/indexes/%s/clear', @name), {}, opts)
62
-
63
- IndexingResponse.new(self, response)
64
- end
65
-
66
- # Delete the index content and wait for operation to complete
67
- #
68
- # @param opts [Hash] contains extra parameters to send with your query
69
- #
70
- def clear_objects!(opts = {})
71
- response = clear_objects(opts)
72
- response.wait(opts)
73
- end
74
-
75
- # Delete an existing index
76
- #
77
- # @param opts [Hash] contains extra parameters to send with your query
78
- #
79
- def delete(opts = {})
80
- response = @transporter.write(:DELETE, path_encode('/1/indexes/%s', @name), opts)
81
-
82
- IndexingResponse.new(self, response)
83
- end
84
-
85
- # Delete an existing index and wait for operation to complete
86
- #
87
- # @param opts [Hash] contains extra parameters to send with your query
88
- #
89
- def delete!(opts = {})
90
- response = delete(opts)
91
- response.wait(opts)
92
- end
93
-
94
- # Find object by the given condition.
95
- #
96
- # Options can be passed in request_options body:
97
- # - query (string): pass a query
98
- # - paginate (bool): choose if you want to iterate through all the
99
- # documents (true) or only the first page (false). Default is true.
100
- # The function takes a block to filter the results from search query
101
- # Usage example:
102
- # index.find_object({'query' => '', 'paginate' => true}) {|obj| obj.key?('company') and obj['company'] == 'Apple'}
103
- #
104
- # @param callback [Lambda] contains extra parameters to send with your query
105
- # @param opts [Hash] contains extra parameters to send with your query
106
- #
107
- # @return [Hash|AlgoliaHttpError] the matching object and its position in the result set
108
- #
109
- def find_object(callback, opts = {})
110
- request_options = symbolize_hash(opts)
111
- paginate = true
112
- page = 0
113
-
114
- query = request_options.delete(:query) || ''
115
- paginate = request_options.delete(:paginate) if request_options.has_key?(:paginate)
116
-
117
- has_next_page = true
118
- while has_next_page
119
- request_options[:page] = page
120
- res = symbolize_hash(search(query, request_options))
121
-
122
- res[:hits].each_with_index do |hit, i|
123
- if callback.call(hit)
124
- return {
125
- object: hit,
126
- position: i,
127
- page: page
128
- }
129
- end
130
- end
131
-
132
- has_next_page = page + 1 < res[:nbPages]
133
- raise AlgoliaHttpError.new(404, 'Object not found') unless paginate && has_next_page
134
-
135
- page += 1
136
- end
137
- end
138
-
139
- # Retrieve the given object position in a set of results.
140
- #
141
- # @param [Array] objects the result set to browse
142
- # @param [String] object_id the object to look for
143
- #
144
- # @return [Integer] position of the object, or -1 if it's not in the array
145
- #
146
- def self.get_object_position(objects, object_id)
147
- hits = get_option(objects, 'hits')
148
- hits.find_index { |hit| get_option(hit, 'objectID') == object_id } || -1
149
- end
150
-
151
- # Copy the current index to the given destination name
152
- #
153
- # @param name [String] destination index name
154
- # @param opts [Hash] contains extra parameters to send with your query
155
- #
156
- # @return [IndexingResponse]
157
- #
158
- def copy_to(name, opts = {})
159
- response = @transporter.write(:POST, path_encode('/1/indexes/%s/operation', @name), { operation: 'copy', destination: name }, opts)
160
-
161
- IndexingResponse.new(self, response)
162
- end
163
-
164
- # Move the current index to the given destination name
165
- #
166
- # @param name [String] destination index name
167
- # @param opts [Hash] contains extra parameters to send with your query
168
- #
169
- # @return [IndexingResponse]
170
- #
171
- def move_to(name, opts = {})
172
- response = @transporter.write(:POST, path_encode('/1/indexes/%s/operation', @name), { operation: 'move', destination: name }, opts)
173
-
174
- IndexingResponse.new(self, response)
175
- end
176
-
177
- # # # # # # # # # # # # # # # # # # # # #
178
- # INDEXING
179
- # # # # # # # # # # # # # # # # # # # # #
180
-
181
- # Retrieve one object from the index
182
- #
183
- # @param object_id [String]
184
- # @param opts [Hash] contains extra parameters to send with your query
185
- #
186
- # @return [Hash]
187
- #
188
- def get_object(object_id, opts = {})
189
- @transporter.read(:GET, path_encode('/1/indexes/%s/%s', @name, object_id), {}, opts)
190
- end
191
-
192
- # Retrieve one or more objects in a single API call
193
- #
194
- # @param object_ids [Array]
195
- # @param opts [Hash] contains extra parameters to send with your query
196
- #
197
- # @return [Hash]
198
- #
199
- def get_objects(object_ids, opts = {})
200
- request_options = symbolize_hash(opts)
201
- attributes_to_retrieve = get_option(request_options, 'attributesToRetrieve')
202
- request_options.delete(:attributesToRetrieve)
203
-
204
- requests = []
205
- object_ids.each do |object_id|
206
- request = { indexName: @name, objectID: object_id.to_s }
207
-
208
- if attributes_to_retrieve
209
- request[:attributesToRetrieve] = attributes_to_retrieve
210
- end
211
-
212
- requests.push(request)
213
- end
214
-
215
- @transporter.read(:POST, '/1/indexes/*/objects', { 'requests': requests }, opts)
216
- end
217
-
218
- # Add an object to the index
219
- #
220
- # @param object [Hash] the object to save
221
- # @param opts [Hash] contains extra parameters to send with your query
222
- #
223
- # @return [IndexingResponse]
224
- #
225
- def save_object(object, opts = {})
226
- save_objects([object], opts)
227
- end
228
-
229
- # Add an object to the index and wait for operation to complete
230
- #
231
- # @param object [Hash] the object to save
232
- # @param opts [Hash] contains extra parameters to send with your query
233
- #
234
- # @return [IndexingResponse]
235
- #
236
- def save_object!(object, opts = {})
237
- response = save_objects([object], opts)
238
- response.wait(opts)
239
- end
240
-
241
- # Add several objects to the index
242
- #
243
- # @param objects [Array] the objects to save
244
- # @param opts [Hash] contains extra parameters to send with your query
245
- #
246
- # @return [IndexingResponse]
247
- #
248
- def save_objects(objects, opts = {})
249
- request_options = symbolize_hash(opts)
250
- generate_object_id = request_options[:auto_generate_object_id_if_not_exist] || false
251
- request_options.delete(:auto_generate_object_id_if_not_exist)
252
- if generate_object_id
253
- IndexingResponse.new(self, raw_batch(chunk('addObject', objects), request_options))
254
- else
255
- IndexingResponse.new(self, raw_batch(chunk('updateObject', objects, true), request_options))
256
- end
257
- end
258
-
259
- # Add several objects to the index and wait for operation to complete
260
- #
261
- # @param objects [Array] the objects to save
262
- # @param opts [Hash] contains extra parameters to send with your query
263
- #
264
- # @return [IndexingResponse]
265
- #
266
- def save_objects!(objects, opts = {})
267
- response = save_objects(objects, opts)
268
- response.wait(opts)
269
- end
270
-
271
- # Partially update an object
272
- #
273
- # @param object [String] object ID to partially update
274
- # @param opts [Hash] contains extra parameters to send with your query
275
- #
276
- # @return [IndexingResponse]
277
- #
278
- def partial_update_object(object, opts = {})
279
- partial_update_objects([object], opts)
280
- end
281
-
282
- # Partially update an object and wait for operation to complete
283
- #
284
- # @param object [String] object ID to partially update
285
- # @param opts [Hash] contains extra parameters to send with your query
286
- #
287
- # @return [IndexingResponse]
288
- #
289
- def partial_update_object!(object, opts = {})
290
- response = partial_update_objects([object], opts)
291
- response.wait(opts)
292
- end
293
-
294
- # Partially update several objects
295
- #
296
- # @param objects [Array] array of objectIDs to partially update
297
- # @param opts [Hash] contains extra parameters to send with your query
298
- #
299
- # @return [IndexingResponse]
300
- #
301
- def partial_update_objects(objects, opts = {})
302
- generate_object_id = false
303
- request_options = symbolize_hash(opts)
304
- if get_option(request_options, 'createIfNotExists')
305
- generate_object_id = true
306
- end
307
- request_options.delete(:createIfNotExists)
308
-
309
- if generate_object_id
310
- IndexingResponse.new(self, raw_batch(chunk('partialUpdateObject', objects), request_options))
311
- else
312
- IndexingResponse.new(self, raw_batch(chunk('partialUpdateObjectNoCreate', objects), request_options))
313
- end
314
- end
315
-
316
- # Partially update several objects and wait for operation to complete
317
- #
318
- # @param objects [Array] array of objectIDs to partially update
319
- # @param opts [Hash] contains extra parameters to send with your query
320
- #
321
- # @return [IndexingResponse]
322
- #
323
- def partial_update_objects!(objects, opts = {})
324
- response = partial_update_objects(objects, opts)
325
- response.wait(opts)
326
- end
327
-
328
- # Delete an existing object from an index
329
- #
330
- # @param object_id [String]
331
- # @param opts [Hash] contains extra parameters to send with your query
332
- #
333
- # @return [IndexingResponse]
334
- #
335
- def delete_object(object_id, opts = {})
336
- delete_objects([object_id], opts)
337
- end
338
-
339
- # Delete an existing object from an index and wait for operation to complete
340
- #
341
- # @param object_id [String]
342
- # @param opts [Hash] contains extra parameters to send with your query
343
- #
344
- # @return [IndexingResponse]
345
- #
346
- def delete_object!(object_id, opts = {})
347
- response = delete_objects([object_id], opts)
348
- response.wait(opts)
349
- end
350
-
351
- # Delete several existing objects from an index
352
- #
353
- # @param object_ids [Array]
354
- # @param opts [Hash] contains extra parameters to send with your query
355
- #
356
- # @return [IndexingResponse]
357
- #
358
- def delete_objects(object_ids, opts = {})
359
- objects = object_ids.map do |object_id|
360
- { objectID: object_id }
361
- end
362
-
363
- IndexingResponse.new(self, raw_batch(chunk('deleteObject', objects), opts))
364
- end
365
-
366
- # Delete several existing objects from an index and wait for operation to complete
367
- #
368
- # @param object_ids [Array]
369
- # @param opts [Hash] contains extra parameters to send with your query
370
- #
371
- # @return [IndexingResponse]
372
- #
373
- def delete_objects!(object_ids, opts = {})
374
- response = delete_objects(object_ids, opts)
375
- response.wait(opts)
376
- end
377
-
378
- # Delete all records matching the query
379
- #
380
- # @param filters [Hash]
381
- # @param opts [Hash] contains extra parameters to send with your query
382
- #
383
- # @return [IndexingResponse]
384
- #
385
- def delete_by(filters, opts = {})
386
- response = @transporter.write(:POST, path_encode('/1/indexes/%s/deleteByQuery', @name), filters, opts)
387
-
388
- IndexingResponse.new(self, response)
389
- end
390
-
391
- # Delete all records matching the query and wait for operation to complete
392
- #
393
- # @param filters [Hash]
394
- # @param opts [Hash] contains extra parameters to send with your query
395
- #
396
- # @return [IndexingResponse]
397
- #
398
- def delete_by!(filters, opts = {})
399
- response = delete_by(filters, opts)
400
-
401
- response.wait(opts)
402
- end
403
-
404
- # Send a batch request
405
- #
406
- # @param requests [Hash] hash containing the requests to batch
407
- # @param opts [Hash] contains extra parameters to send with your query
408
- #
409
- # @return [IndexingResponse]
410
- #
411
- def batch(requests, opts = {})
412
- response = raw_batch(requests, opts)
413
-
414
- IndexingResponse.new(self, response)
415
- end
416
-
417
- # Send a batch request and wait for operation to complete
418
- #
419
- # @param requests [Hash] hash containing the requests to batch
420
- # @param opts [Hash] contains extra parameters to send with your query
421
- #
422
- # @return [IndexingResponse]
423
- #
424
- def batch!(requests, opts = {})
425
- response = batch(requests, opts)
426
- response.wait(opts)
427
- end
428
-
429
- # # # # # # # # # # # # # # # # # # # # #
430
- # QUERY RULES
431
- # # # # # # # # # # # # # # # # # # # # #
432
-
433
- # Retrieve the Rule with the specified objectID
434
- #
435
- # @param object_id [String]
436
- # @param opts [Hash] contains extra parameters to send with your query
437
- #
438
- # @return [Hash]
439
- #
440
- def get_rule(object_id, opts = {})
441
- @transporter.read(:GET, path_encode('/1/indexes/%s/rules/%s', @name, object_id), {}, opts)
442
- end
443
-
444
- # Create or update a rule
445
- #
446
- # @param rule [Hash] a hash containing a rule objectID and different conditions/consequences
447
- # @param opts [Hash] contains extra parameters to send with your query
448
- #
449
- # @return [Array, IndexingResponse]
450
- #
451
- def save_rule(rule, opts = {})
452
- save_rules([rule], opts)
453
- end
454
-
455
- # Create or update a rule and wait for operation to complete
456
- #
457
- # @param rule [Hash] a hash containing a rule objectID and different conditions/consequences
458
- # @param opts [Hash] contains extra parameters to send with your query
459
- #
460
- # @return [Array, IndexingResponse]
461
- #
462
- def save_rule!(rule, opts = {})
463
- response = save_rules([rule], opts)
464
- response.wait(opts)
465
- end
466
-
467
- # Create or update rules
468
- #
469
- # @param rules [Array] an array of hashes containing a rule objectID and different conditions/consequences
470
- # @param opts [Hash] contains extra parameters to send with your query
471
- #
472
- # @return [Array, IndexingResponse]
473
- #
474
- def save_rules(rules, opts = {})
475
- if rules.is_a?(RuleIterator)
476
- iterated = []
477
- rules.each do |rule|
478
- iterated.push(rule)
479
- end
480
- rules = iterated
481
- end
482
-
483
- if rules.empty?
484
- return []
485
- end
486
-
487
- forward_to_replicas = false
488
- clear_existing_rules = false
489
- request_options = symbolize_hash(opts)
490
-
491
- if request_options[:forwardToReplicas]
492
- forward_to_replicas = true
493
- request_options.delete(:forwardToReplicas)
494
- end
495
-
496
- if request_options[:clearExistingRules]
497
- clear_existing_rules = true
498
- request_options.delete(:clearExistingRules)
499
- end
500
-
501
- rules.each do |rule|
502
- get_object_id(rule)
503
- end
504
-
505
- response = @transporter.write(:POST, path_encode('/1/indexes/%s/rules/batch', @name) + handle_params({ forwardToReplicas: forward_to_replicas, clearExistingRules: clear_existing_rules }), rules, request_options)
506
-
507
- IndexingResponse.new(self, response)
508
- end
509
-
510
- # Create or update rules and wait for operation to complete
511
- #
512
- # @param rules [Array] an array of hashes containing a rule objectID and different conditions/consequences
513
- # @param opts [Hash] contains extra parameters to send with your query
514
- #
515
- # @return [Array, IndexingResponse]
516
- #
517
- def save_rules!(rules, opts = {})
518
- response = save_rules(rules, opts)
519
- response.wait(opts)
520
- end
521
-
522
- # Delete all Rules in the index
523
- #
524
- # @param opts [Hash] contains extra parameters to send with your query
525
- #
526
- # @return [IndexingResponse]
527
- #
528
- def clear_rules(opts = {})
529
- forward_to_replicas = false
530
- request_options = symbolize_hash(opts)
531
-
532
- if request_options[:forwardToReplicas]
533
- forward_to_replicas = true
534
- request_options.delete(:forwardToReplicas)
535
- end
536
-
537
- response = @transporter.write(:POST, path_encode('1/indexes/%s/rules/clear', @name) + handle_params({ forwardToReplicas: forward_to_replicas }), '', request_options)
538
-
539
- IndexingResponse.new(self, response)
540
- end
541
-
542
- # Delete all Rules in the index and wait for operation to complete
543
- #
544
- # @param opts [Hash] contains extra parameters to send with your query
545
- #
546
- # @return [IndexingResponse]
547
- #
548
- def clear_rules!(opts = {})
549
- response = clear_rules(opts)
550
- response.wait(opts)
551
- end
552
-
553
- # Delete the Rule with the specified objectID
554
- #
555
- # @param object_id [String]
556
- # @param opts [Hash] contains extra parameters to send with your query
557
- #
558
- # @return [IndexingResponse]
559
- #
560
- def delete_rule(object_id, opts = {})
561
- forward_to_replicas = false
562
- request_options = symbolize_hash(opts)
563
-
564
- if request_options[:forwardToReplicas]
565
- forward_to_replicas = true
566
- request_options.delete(:forwardToReplicas)
567
- end
568
-
569
- response = @transporter.write(
570
- :DELETE,
571
- path_encode('1/indexes/%s/rules/%s', @name, object_id) + handle_params({ forwardToReplicas: forward_to_replicas }),
572
- '',
573
- request_options
574
- )
575
-
576
- IndexingResponse.new(self, response)
577
- end
578
-
579
- # Delete the Rule with the specified objectID and wait for operation to complete
580
- #
581
- # @param object_id [String]
582
- # @param opts [Hash] contains extra parameters to send with your query
583
- #
584
- # @return [IndexingResponse]
585
- #
586
- def delete_rule!(object_id, opts = {})
587
- response = delete_rule(object_id, opts)
588
- response.wait(opts)
589
- end
590
-
591
- # # # # # # # # # # # # # # # # # # # # #
592
- # SYNONYMS
593
- # # # # # # # # # # # # # # # # # # # # #
594
-
595
- # Fetch a synonym object identified by its objectID
596
- #
597
- # @param object_id [String]
598
- # @param opts [Hash] contains extra parameters to send with your query
599
- #
600
- # @return [Hash]
601
- #
602
- def get_synonym(object_id, opts = {})
603
- @transporter.read(:GET, path_encode('/1/indexes/%s/synonyms/%s', @name, object_id), {}, opts)
604
- end
605
-
606
- # Create a new synonym object or update the existing synonym object with the given object ID
607
- #
608
- # @param synonym [Hash] Synonym object
609
- # @param opts [Hash] contains extra parameters to send with your query
610
- #
611
- # @return [Array, IndexingResponse]
612
- #
613
- def save_synonym(synonym, opts = {})
614
- save_synonyms([synonym], opts)
615
- end
616
-
617
- # Create a new synonym object or update the existing synonym object with the given object ID
618
- # and wait for operation to finish
619
- #
620
- # @param synonym [Hash] Synonym object
621
- # @param opts [Hash] contains extra parameters to send with your query
622
- #
623
- # @return [Array, IndexingResponse]
624
- #
625
- def save_synonym!(synonym, opts = {})
626
- response = save_synonyms([synonym], opts)
627
- response.wait(opts)
628
- end
629
-
630
- # Create/update multiple synonym objects at once, potentially replacing the entire list of synonyms if
631
- # replaceExistingSynonyms is true
632
- #
633
- # @param synonyms [Array] Array of Synonym objects
634
- # @param opts [Hash] contains extra parameters to send with your query
635
- #
636
- # @return [Array, IndexingResponse]
637
- #
638
- def save_synonyms(synonyms, opts = {})
639
- if synonyms.is_a?(SynonymIterator)
640
- iterated = []
641
- synonyms.each do |synonym|
642
- iterated.push(synonym)
643
- end
644
- synonyms = iterated
645
- end
646
-
647
- if synonyms.empty?
648
- return []
649
- end
650
-
651
- synonyms.each do |synonym|
652
- get_object_id(synonym)
653
- end
654
-
655
- forward_to_replicas = false
656
- replace_existing_synonyms = false
657
-
658
- request_options = symbolize_hash(opts)
659
-
660
- if request_options[:forwardToReplicas]
661
- forward_to_replicas = true
662
- request_options.delete(:forwardToReplicas)
663
- end
664
-
665
- if request_options[:replaceExistingSynonyms]
666
- replace_existing_synonyms = true
667
- request_options.delete(:replaceExistingSynonyms)
668
- end
669
- response = @transporter.write(
670
- :POST,
671
- path_encode('/1/indexes/%s/synonyms/batch', @name) + handle_params({ forwardToReplicas: forward_to_replicas, replaceExistingSynonyms: replace_existing_synonyms }),
672
- synonyms,
673
- request_options
674
- )
675
-
676
- IndexingResponse.new(self, response)
677
- end
678
-
679
- # Create/update multiple synonym objects at once, potentially replacing the entire list of synonyms if
680
- # replaceExistingSynonyms is true and wait for operation to complete
681
- #
682
- # @param synonyms [Array] Array of Synonym objects
683
- # @param opts [Hash] contains extra parameters to send with your query
684
- #
685
- # @return [Array, IndexingResponse]
686
- #
687
- def save_synonyms!(synonyms, opts = {})
688
- response = save_synonyms(synonyms, opts)
689
- response.wait(opts)
690
- end
691
-
692
- # Delete all synonyms from the index
693
- #
694
- # @param opts [Hash] contains extra parameters to send with your query
695
- #
696
- # @return [IndexingResponse]
697
- #
698
- def clear_synonyms(opts = {})
699
- forward_to_replicas = false
700
- request_options = symbolize_hash(opts)
701
-
702
- if request_options[:forwardToReplicas]
703
- forward_to_replicas = true
704
- request_options.delete(:forwardToReplicas)
705
- end
706
- response = @transporter.write(
707
- :POST,
708
- path_encode('1/indexes/%s/synonyms/clear', @name) + handle_params({ forwardToReplicas: forward_to_replicas }),
709
- '',
710
- request_options
711
- )
712
-
713
- IndexingResponse.new(self, response)
714
- end
715
-
716
- # Delete all synonyms from the index and wait for operation to complete
717
- #
718
- # @param opts [Hash] contains extra parameters to send with your query
719
- #
720
- # @return [IndexingResponse]
721
- #
722
- def clear_synonyms!(opts = {})
723
- response = clear_synonyms(opts)
724
- response.wait(opts)
725
- end
726
-
727
- # Delete a single synonyms set, identified by the given objectID
728
- #
729
- # @param opts [Hash] contains extra parameters to send with your query
730
- #
731
- # @return [IndexingResponse]
732
- #
733
- def delete_synonym(object_id, opts = {})
734
- forward_to_replicas = false
735
- request_options = symbolize_hash(opts)
736
-
737
- if request_options[:forwardToReplicas]
738
- forward_to_replicas = true
739
- request_options.delete(:forwardToReplicas)
740
- end
741
- response = @transporter.write(
742
- :DELETE,
743
- path_encode('1/indexes/%s/synonyms/%s', @name, object_id) + handle_params({ forwardToReplicas: forward_to_replicas }),
744
- '',
745
- request_options
746
- )
747
-
748
- IndexingResponse.new(self, response)
749
- end
750
-
751
- # Delete a single synonyms set, identified by the given objectID and wait for operation to complete
752
- #
753
- # @param opts [Hash] contains extra parameters to send with your query
754
- #
755
- # @return [IndexingResponse]
756
- #
757
- def delete_synonym!(object_id, opts = {})
758
- response = delete_synonym(object_id, opts)
759
- response.wait(opts)
760
- end
761
-
762
- # # # # # # # # # # # # # # # # # # # # #
763
- # BROWSING
764
- # # # # # # # # # # # # # # # # # # # # #
765
-
766
- # Browse all index content
767
- #
768
- # @param opts [Hash] contains extra parameters to send with your query
769
- #
770
- # @return [Enumerator, ObjectIterator]
771
- #
772
- def browse_objects(opts = {}, &block)
773
- if block_given?
774
- ObjectIterator.new(@transporter, @name, opts).each(&block)
775
- else
776
- ObjectIterator.new(@transporter, @name, opts)
777
- end
778
- end
779
-
780
- # Browse all rules
781
- #
782
- # @param opts [Hash] contains extra parameters to send with your query
783
- #
784
- # @return [Enumerator, RuleIterator]
785
- #
786
- def browse_rules(opts = {}, &block)
787
- if block_given?
788
- RuleIterator.new(@transporter, @name, opts).each(&block)
789
- else
790
- RuleIterator.new(@transporter, @name, opts)
791
- end
792
- end
793
-
794
- # Browse all synonyms
795
- #
796
- # @param opts [Hash] contains extra parameters to send with your query
797
- #
798
- # @return [Enumerator, SynonymIterator]
799
- #
800
- def browse_synonyms(opts = {}, &block)
801
- if block_given?
802
- SynonymIterator.new(@transporter, @name, opts).each(&block)
803
- else
804
- SynonymIterator.new(@transporter, @name, opts)
805
- end
806
- end
807
-
808
- # # # # # # # # # # # # # # # # # # # # #
809
- # REPLACING
810
- # # # # # # # # # # # # # # # # # # # # #
811
-
812
- # Replace all objects in the index
813
- #
814
- # @param objects [Array] Array of objects
815
- # @param opts [Hash] contains extra parameters to send with your query
816
- #
817
- # @return [Enumerator, SynonymIterator]
818
- #
819
- def replace_all_objects(objects, opts = {})
820
- safe = false
821
- request_options = symbolize_hash(opts)
822
- if request_options[:safe]
823
- safe = true
824
- request_options.delete(:safe)
825
- end
826
-
827
- tmp_index_name = @name + '_tmp_' + rand(10000000).to_s
828
- copy_to_response = copy_to(tmp_index_name, request_options.merge({ scope: %w(settings synonyms rules) }))
829
-
830
- if safe
831
- copy_to_response.wait
832
- end
833
-
834
- # TODO: consider create a new client with state of retry is shared
835
- tmp_client = Algolia::Search::Client.new(@config, { logger: logger })
836
- tmp_index = tmp_client.init_index(tmp_index_name)
837
-
838
- save_objects_response = tmp_index.save_objects(objects, request_options)
839
-
840
- if safe
841
- save_objects_response.wait
842
- end
843
-
844
- move_to_response = tmp_index.move_to(@name)
845
- if safe
846
- move_to_response.wait
847
- end
848
- end
849
-
850
- # Replace all objects in the index and wait for the operation to complete
851
- #
852
- # @param objects [Array] Array of objects
853
- # @param opts [Hash] contains extra parameters to send with your query
854
- #
855
- # @return [Enumerator, SynonymIterator]
856
- #
857
- def replace_all_objects!(objects, opts = {})
858
- replace_all_objects(objects, opts.merge(safe: true))
859
- end
860
-
861
- # Replace all rules in the index
862
- #
863
- # @param rules [Array] Array of rules
864
- # @param opts [Hash] contains extra parameters to send with your query
865
- #
866
- # @return [Array, IndexingResponse]
867
- #
868
- def replace_all_rules(rules, opts = {})
869
- request_options = symbolize_hash(opts)
870
- request_options[:clearExistingRules] = true
871
-
872
- save_rules(rules, request_options)
873
- end
874
-
875
- # Replace all rules in the index and wait for the operation to complete
876
- #
877
- # @param rules [Array] Array of rules
878
- # @param opts [Hash] contains extra parameters to send with your query
879
- #
880
- # @return [Array, IndexingResponse]
881
- #
882
- def replace_all_rules!(rules, opts = {})
883
- request_options = symbolize_hash(opts)
884
- request_options[:clearExistingRules] = true
885
-
886
- save_rules!(rules, request_options)
887
- end
888
-
889
- # Replace all synonyms in the index
890
- #
891
- # @param synonyms [Array] Array of synonyms
892
- # @param opts [Hash] contains extra parameters to send with your query
893
- #
894
- # @return [Array, IndexingResponse]
895
- #
896
- def replace_all_synonyms(synonyms, opts = {})
897
- request_options = symbolize_hash(opts)
898
- request_options[:replaceExistingSynonyms] = true
899
-
900
- save_synonyms(synonyms, request_options)
901
- end
902
-
903
- # Replace all synonyms in the index and wait for the operation to complete
904
- #
905
- # @param synonyms [Array] Array of synonyms
906
- # @param opts [Hash] contains extra parameters to send with your query
907
- #
908
- # @return [Array, IndexingResponse]
909
- #
910
- def replace_all_synonyms!(synonyms, opts = {})
911
- request_options = symbolize_hash(opts)
912
- request_options[:replaceExistingSynonyms] = true
913
-
914
- save_synonyms!(synonyms, request_options)
915
- end
916
-
917
- # # # # # # # # # # # # # # # # # # # # #
918
- # SEARCHING
919
- # # # # # # # # # # # # # # # # # # # # #
920
-
921
- # Perform a search on the index
922
- #
923
- # @param query the full text query
924
- # @param opts [Hash] contains extra parameters to send with your query
925
- #
926
- # @return [Hash]
927
- #
928
- def search(query, opts = {})
929
- @transporter.read(:POST, path_encode('/1/indexes/%s/query', @name), { 'query': query.to_s }, opts)
930
- end
931
-
932
- # Search for values of a given facet, optionally restricting the returned values to those contained
933
- # in objects matching other search criteria
934
- #
935
- # @param facet_name [String]
936
- # @param facet_query [String]
937
- # @param opts [Hash] contains extra parameters to send with your query
938
- #
939
- # @return [Hash]
940
- #
941
- def search_for_facet_values(facet_name, facet_query, opts = {})
942
- @transporter.read(:POST, path_encode('/1/indexes/%s/facets/%s/query', @name, facet_name),
943
- { 'facetQuery': facet_query }, opts)
944
- end
945
-
946
- # Search or browse all synonyms, optionally filtering them by type
947
- #
948
- # @param query [String] Search for specific synonyms matching this string
949
- # @param opts [Hash] contains extra parameters to send with your query
950
- #
951
- # @return [Hash]
952
- #
953
- def search_synonyms(query, opts = {})
954
- @transporter.read(:POST, path_encode('/1/indexes/%s/synonyms/search', @name), { query: query.to_s }, opts)
955
- end
956
-
957
- # Search or browse all rules, optionally filtering them by type
958
- #
959
- # @param query [String] Search for specific rules matching this string
960
- # @param opts [Hash] contains extra parameters to send with your query
961
- #
962
- # @return [Hash]
963
- #
964
- def search_rules(query, opts = {})
965
- @transporter.read(:POST, path_encode('/1/indexes/%s/rules/search', @name), { query: query.to_s }, opts)
966
- end
967
-
968
- # # # # # # # # # # # # # # # # # # # # #
969
- # SETTINGS
970
- # # # # # # # # # # # # # # # # # # # # #
971
-
972
- # Retrieve index settings
973
- #
974
- # @param opts [Hash] contains extra parameters to send with your query
975
- #
976
- # @return [Hash]
977
- #
978
- def get_settings(opts = {})
979
- opts_default = {
980
- getVersion: 2
981
- }
982
- opts = opts_default.merge(opts)
983
- response = @transporter.read(:GET, path_encode('/1/indexes/%s/settings', @name), {}, opts)
984
-
985
- deserialize_settings(response, @config.symbolize_keys)
986
- end
987
-
988
- # Update some index settings. Only specified settings are overridden
989
- #
990
- # @param settings [Hash] the settings to update
991
- # @param opts [Hash] contains extra parameters to send with your query
992
- #
993
- # @return [IndexingResponse]
994
- #
995
- def set_settings(settings, opts = {})
996
- request_options = symbolize_hash(opts)
997
- forward_to_replicas = request_options.delete(:forwardToReplicas) || false
998
-
999
- response = @transporter.write(
1000
- :PUT,
1001
- path_encode('/1/indexes/%s/settings', @name) + handle_params({ forwardToReplicas: forward_to_replicas }),
1002
- settings,
1003
- request_options
1004
- )
1005
-
1006
- IndexingResponse.new(self, response)
1007
- end
1008
-
1009
- # Update some index settings and wait for operation to complete.
1010
- # Only specified settings are overridden
1011
- #
1012
- # @param settings [Hash] the settings to update
1013
- # @param opts [Hash] contains extra parameters to send with your query
1014
- #
1015
- # @return [IndexingResponse]
1016
- #
1017
- def set_settings!(settings, opts = {})
1018
- response = set_settings(settings, opts)
1019
- response.wait(opts)
1020
- end
1021
-
1022
- # # # # # # # # # # # # # # # # # # # # #
1023
- # EXISTS
1024
- # # # # # # # # # # # # # # # # # # # # #
1025
-
1026
- # Checks if the current index exists
1027
- #
1028
- # @return [Boolean]
1029
- #
1030
- def exists
1031
- begin
1032
- get_settings
1033
- rescue AlgoliaHttpError => e
1034
- if e.code == 404
1035
- return false
1036
- end
1037
-
1038
- raise e
1039
- end
1040
- true
1041
- end
1042
-
1043
- #
1044
- # Aliases the exists method
1045
- #
1046
- alias_method :exists?, :exists
1047
-
1048
- # # # # # # # # # # # # # # # # # # # # #
1049
- # PRIVATE
1050
- # # # # # # # # # # # # # # # # # # # # #
1051
-
1052
- private
1053
-
1054
- def raw_batch(requests, opts)
1055
- @transporter.write(:POST, path_encode('/1/indexes/%s/batch', @name), { requests: requests }, opts)
1056
- end
1057
- end
1058
- end
1059
- end