{"id":22852198,"url":"https://github.com/knoxpo/dart_algolia","last_synced_at":"2025-04-05T13:09:52.978Z","repository":{"id":33790566,"uuid":"162445916","full_name":"knoxpo/dart_algolia","owner":"knoxpo","description":"[Unofficial] Algolia is a pure dart SDK, wrapped around Algolia REST API for easy implementation for your Flutter or Dart projects.","archived":false,"fork":false,"pushed_at":"2024-06-29T07:56:12.000Z","size":147,"stargazers_count":118,"open_issues_count":39,"forks_count":118,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-29T12:09:56.709Z","etag":null,"topics":["algolia","algolia-search","algoliasearch","dart","flutter","knoxpo","sdk"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/knoxpo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-19T14:04:38.000Z","updated_at":"2024-12-06T08:12:14.000Z","dependencies_parsed_at":"2024-06-18T16:57:49.898Z","dependency_job_id":"1981f85d-7e96-412c-b15e-09f082f86dbb","html_url":"https://github.com/knoxpo/dart_algolia","commit_stats":{"total_commits":59,"total_committers":10,"mean_commits":5.9,"dds":"0.38983050847457623","last_synced_commit":"6264018b92853cc43fc86547e110e90fd3fad321"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knoxpo%2Fdart_algolia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knoxpo%2Fdart_algolia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knoxpo%2Fdart_algolia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knoxpo%2Fdart_algolia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/knoxpo","download_url":"https://codeload.github.com/knoxpo/dart_algolia/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247339158,"owners_count":20923014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algolia","algolia-search","algoliasearch","dart","flutter","knoxpo","sdk"],"created_at":"2024-12-13T06:07:30.217Z","updated_at":"2025-04-05T13:09:52.955Z","avatar_url":"https://github.com/knoxpo.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Algolia Search (Dart Client)\n\n![Algolia](https://res.cloudinary.com/hilnmyskv/image/upload/q_auto/v1614950376/Algolia_com_Website_assets/images/shared/algolia_logo/logo-algolia-nebula-blue-full.svg 'Algolia')\n\n**[UNOFFICIAL]** Algolia is a pure dart SDK, wrapped around Algolia REST API for easy implementation for your Flutter or Dart projects.\n\n[![pub package](https://img.shields.io/pub/v/algolia.svg)](https://pub.dartlang.org/packages/algolia)  [![.github/workflows/dart.yml](https://github.com/knoxpo/dart_algolia/actions/workflows/dart.yml/badge.svg)](https://github.com/knoxpo/dart_algolia/actions/workflows/dart.yml) [![Build Status](https://travis-ci.com/knoxpo/dart_algolia.svg?branch=master)](https://travis-ci.com/knoxpo/dart_algolia)\n\n[Pub](https://pub.dartlang.org/packages/algolia) - [API Docs](https://pub.dartlang.org/documentation/algolia/latest/) - [GitHub](https://github.com/knoxpo/dart_algolia)\n\n## Features\n\n- Query / Search / Similar Query\n- Get Object\n- Add Object\n- Add Objects\n- Replace all objects in an Index\n- Update Object\n- Partial Update Object\n- Delete Object\n- Perform Batch Activities\n- Add Index\n- Delete Index\n- Clear Index\n- Copy Index\n- Move Index\n- Index Settings\n- Push Insights Events\n\n## Version compatibility\n\nSee CHANGELOG for all breaking (and non-breaking) changes.\n\n## Become Contributor\n\nIf you wish to contribute in our development process, refer to our [Contributing Guidelines](https://github.com/knoxpo/dart_algolia/blob/master/CONTRIBUTING.md)\n\n## Getting started\n\nYou should ensure that you add the router as a dependency in your flutter project.\n\n```yaml\ndependencies:\n algolia: ^1.1.2\n```\n\nYou should then run `flutter packages upgrade` or update your packages in IntelliJ.\n\n## Example Project\n\nThere is a pretty sweet example project in the `example` folder. Check it out. Otherwise, keep reading to get up and running.\n\n## Setting up\n\n```dart\n  ///\n  /// Initiate static Algolia once in your project.\n  ///\n  class Application {\n    static final Algolia algolia = Algolia.init(\n      applicationId: 'YOUR_APPLICATION_ID',\n      apiKey: 'YOUR_API_KEY',\n    );\n  }\n  \n  void main() async {\n    ///\n    /// Initiate Algolia in your project\n    ///\n    Algolia algolia = Application.algolia;\n\n    ///\n    /// Perform Query\n    ///\n    AlgoliaQuery query = algolia.instance.index('contacts').query('john');\n\n    // Perform multiple facetFilters\n    query = query.facetFilter('status:published');\n    query = query.facetFilter('isDelete:false');\n\n    // Get Result/Objects\n    AlgoliaQuerySnapshot snap = await query.getObjects();\n\n    // Checking if has [AlgoliaQuerySnapshot]\n    print('Hits count: ${snap.nbHits}');\n\n    ///\n    /// Perform Index Settings\n    ///\n    AlgoliaIndexSettings settingsRef = algolia.instance.index('contact').settings;\n\n    // Get Settings\n    Map\u003cString, dynamic\u003e currentSettings = await settingsRef.getSettings();\n\n    // Checking if has [Map]\n    print('\\n\\n');\n    print(currentSettings);\n\n    // Set Settings\n    AlgoliaSettings settingsData = settingsRef;\n    settingsData = settingsData.setReplicas(const ['index_copy_1', 'index_copy_2']);\n    AlgoliaTask setSettings = await settingsData.setSettings();\n\n    // Checking if has [AlgoliaTask]\n    print('\\n\\n');\n    print(setSettings.data);\n\n    // Pushing Event\n    AlgoliaEvent event = AlgoliaEvent(\n      eventType: AlgoliaEventType.view,\n      eventName: 'View contact',\n      index: 'contacts',\n      userToken: 'user123',\n    );\n    await algolia.instance.pushEvents([event]);\n  }\n```\n\n## Insights\n\nThe Insights API lets you push a collection of events related to how your product is being used. Sending those events is a required step for using several Algolia features like Click analytics, A/B Testing, Personalization and Dynamic Re-Ranking.\n\n- `.pushEvents(List\u003cAlgoliaEvent\u003e events)`\n\n\n## Search Parameters\n\nHere is the list of parameters you can use with the search method (search scope).\nWe have managed to include most commonly used parameters for search functionality\nand there many more to be added in future releases.\n\nWe have indicated counts of queryable parameters with their availability status\non official Algolia website and what we have managed to support it in this\nversion of the release.\n\n##### search (1/1)\n\n- `.query(String value)`\n- `.similarQuery(String value)`\n\n##### attributes (2/2)\n\n- `.setAttributesToRetrieve(List\u003cString\u003e value)`\n- `.setRestrictSearchableAttributes(List\u003cString\u003e value)`\n\n##### filtering (6/6)\n\n- `.filters(String value)`\n- `.facetFilter(dynamic value)` This can be used multiple times in a query.\n- `.setOptionalFilter(String value)` This can be used multiple times in a query.\n- `.setNumericFilter(String value)` This can be used multiple times in a query.\n- `.setTagFilter(String value)` This can be used multiple times in a query.\n- `.setSumOrFiltersScore(bool value)`\n\n##### faceting (4/4)\n\n- `.setFacets(List\u003cString\u003e value)`\n- `.setMaxValuesPerFacet(int value)`\n- `.setFacetingAfterDistinct({bool enable = true})`\n- `.setSortFacetValuesBy(AlgoliaSortFacetValuesBy value)`\n\n##### highlighting-snippeting (6/6)\n\n- `.setAttributesToHighlight(List\u003cString\u003e value)`\n- `.setAttributesToSnippet(List\u003cString\u003e value)`\n- `.setHighlightPreTag(String value)`\n- `.setHighlightPostTag(String value)`\n- `.setSnippetEllipsisText(String value)`\n- `.setRestrictHighlightAndSnippetArrays({bool enable = true})`\n\n##### pagination (4/4)\n\n- `.setPage(int value)`\n- `.setHitsPerPage(int value)`\n- `.setOffset(int value)`\n- `.setLength(int value)`\n\n##### typos (5/5)\n\n- `.setMinWordSizeFor1Typo(int value)`\n- `.setMinWordSizeFor2Typos(int value)`\n- `.setTypoTolerance(dynamic value)`\n- `.setAllowTyposOnNumericTokens(bool value)`\n- `.setDisableTypoToleranceOnAttributes(List\u003cString\u003e value)`\n\n##### geo-search (7/7)\n\n- `.setAroundLatLng(String value)`\n- `.setAroundLatLngViaIP(bool value)`\n- `.setAroundRadius(dynamic value)`\n- `.setAroundPrecision(int value)`\n- `.setMinimumAroundRadius(int value)`\n- `.setInsideBoundingBox(List\u003cBoundingBox\u003e value)`\n- `.setInsidePolygon(List\u003cBoundingPolygonBox\u003e value)`\n\n##### languages (8/11)\n\n- `.setIgnorePlurals(dynamic value)`\n- `.setRemoveStopWords(dynamic value)`\n- `.setCamelCaseAttributes(List\u003cString\u003e value)`\n- `.setDecompoundedAttributes(dynamic value)`\n- `.setkeepDiacriticsOnCharacters(String value)`\n- `.setQueryLanguages(List\u003cString\u003e value)`\n- `.setIndexLanguages(List\u003cString\u003e value)`\n- `.setNaturalLanguages(List\u003cString\u003e value)`\n\n##### query-rules (3/3)\n\n- `.setEnableRules({bool enabled = false})`\n- `.setFilterPromotes({bool enabled = false})`\n- `.setRuleContexts(List\u003cString\u003e value)`\n\n##### personalization (3/3)\n\n- `.setEnablePersonalization({bool enabled = false})`\n- `.setPersonalizationImpact({required int value})`\n- `.setUserToken({required String value})`\n\n##### query-strategy (7/7)\n\n- `.setQueryType(QueryType value)`\n- `.setRemoveWordsIfNoResults(RemoveWordsIfNoResults value)`\n- `.setAdvancedSyntax({bool enabled = false})`\n- `.setOptionalWords(List\u003cString\u003e value)`\n- `.setDisablePrefixOnAttributes(List\u003cString\u003e value)`\n- `.setDisableExactOnAttributes(List\u003cString\u003e value)`\n- `.setExactOnSingleWordQuery(ExactOnSingleWordQuery value)`\n\n##### performance (2/2)\n\n- `.setNumericAttributesForFiltering({required List\u003cString\u003e value})`\n- `.setAllowCompressionOfIntegerArray({bool enabled = false})`\n\n##### advanced (11/15)\n\n- `.setAttributeForDistinct(String value)`\n- `.setDistinct({dynamic value = 0})`\n- `.setGetRankingInfo({bool enabled = true})`\n- `.setClickAnalytics({bool enabled = false})`\n- `.setAnalytics({bool enabled = false})`\n- `.setAnalyticsTags(List\u003cString\u003e value)`\n- `.setSynonyms({bool enabled = false})`\n- `.setReplaceSynonymsInHighlight({bool enabled = false})`\n- `.setMaxFacetHits(int value)`\n- `.setPercentileComputation({bool enabled = false})`\n- `.setEnableABTest({bool enabled = false})`\n\n##### custom-query (11/15)\n- `.custom(String key, dynamic value)`\n\n##### GET RESULT\n\n- `.getObjects()`\n\n## Settings Parameters\n\nHere is the list of parameters you can use with the settings method (settings scope).\nWe have managed to include most commonly used parameters for settings functionality\nand there many more to be added in future releases.\n\nWe have indicated counts of settings parameters with their availability status\non official Algolia website and what we have managed to support it in this\nversion of the release.\n\n##### attributes (4/4)\n\n- `.setSearchableAttributes(List\u003cString\u003e value)`\n- `.setAttributesForFaceting(List\u003cString\u003e value)`\n- `.setUnretrievableAttributes(List\u003cString\u003e value)`\n- `.setAttributesToRetrieve(List\u003cString\u003e value)`\n\n##### ranking (3/3)\n\n- `.setRanking(List\u003cString\u003e value)`\n- `.setCustomRanking(List\u003cString\u003e value)`\n- `.setReplicas(List\u003cString\u003e value)`\n\n##### faceting (2/2)\n\n- `.setMaxValuesPerFacet(int value)`\n- `.setSortFacetValuesBy(AlgoliaSortFacetValuesBy value)`\n\n##### highlighting-snippeting (6/6)\n\n- `.setAttributesToHighlight(List\u003cString\u003e value)`\n- `.setAttributesToSnippet(List\u003cString\u003e value)`\n- `.setHighlightPreTag(String value)`\n- `.setHighlightPostTag(String value)`\n- `.setSnippetEllipsisText(String value)`\n- `.setRestrictHighlightAndSnippetArrays({bool enable = true})`\n\n##### pagination (2/2)\n\n- `.setHitsPerPage(int value)`\n- `.setPaginationLimitedTo(int value)`\n\n##### typos (7/7)\n\n- `.setMinWordSizeFor1Typo(int value)`\n- `.setMinWordSizeFor2Typos(int value)`\n- `.setTypoTolerance(dynamic value)`\n- `.setAllowTyposOnNumericTokens(bool value)`\n- `.setDisableTypoToleranceOnAttributes(List\u003cString\u003e value)`\n- `.setDisableTypoToleranceOnWords(List\u003cString\u003e value)`\n- `.setSeparatorsToIndex(List\u003cString\u003e value)`\n\n##### languages (8/11)\n\n- `.setIgnorePlurals(dynamic value)`\n- `.setRemoveStopWords(dynamic value)`\n- `.setCamelCaseAttributes(List\u003cString\u003e value)`\n- `.setDecompoundedAttributes(dynamic value)`\n- `.setkeepDiacriticsOnCharacters(String value)`\n- `.setQueryLanguages(List\u003cString\u003e value)`\n- `.setIndexLanguages(List\u003cString\u003e value)`\n- `.setNaturalLanguages(List\u003cString\u003e value)`\n\n##### query-rules (3/3)\n\n- `.setEnableRules({bool enabled = false})`\n- `.setFilterPromotes({bool enabled = false})`\n- `.setRuleContexts(List\u003cString\u003e value)`\n\n##### personalization (3/3)\n\n- `.setEnablePersonalization({bool enabled = false})`\n- `.setPersonalizationImpact({required int value})`\n- `.setUserToken({required String value})`\n\n##### query-strategy (7/7)\n\n- `.setQueryType(QueryType value)`\n- `.setRemoveWordsIfNoResults(RemoveWordsIfNoResults value)`\n- `.setAdvancedSyntax({bool enabled = false})`\n- `.setOptionalWords(List\u003cString\u003e value)`\n- `.setDisablePrefixOnAttributes(List\u003cString\u003e value)`\n- `.setDisableExactOnAttributes(List\u003cString\u003e value)`\n- `.setExactOnSingleWordQuery(ExactOnSingleWordQuery value)`\n\n##### performance (2/2)\n\n- `.setNumericAttributesForFiltering({required List\u003cString\u003e value})`\n- `.setAllowCompressionOfIntegerArray({bool enabled = false})`\n\n##### advanced (11/15)\n\n- `.setAttributeForDistinct(String value)`\n- `.setDistinct({dynamic value = 0})`\n- `.setGetRankingInfo({bool enabled = true})`\n- `.setClickAnalytics({bool enabled = false})`\n- `.setAnalytics({bool enabled = false})`\n- `.setAnalyticsTags(List\u003cString\u003e value)`\n- `.setSynonyms({bool enabled = false})`\n- `.setReplaceSynonymsInHighlight({bool enabled = false})`\n- `.setMaxFacetHits(int value)`\n- `.setPercentileComputation({bool enabled = false})`\n- `.setEnableABTest({bool enabled = false})`\n\n##### GET Settings\n\n- `.getSettings()`\n\n##### SET Settings\n\n- `.setSettings()`\n\n------\n*Algolia [Unofficial SDK for Dart] is a Knoxpo original.*\n\n\u003ca href=\"https://knoxpo.com\" target=\"_knoxpo\"\u003e\u003cimg src=\"https://www.knoxpo.com/assets/logo.png\" width=\"80\"\u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknoxpo%2Fdart_algolia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fknoxpo%2Fdart_algolia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknoxpo%2Fdart_algolia/lists"}