패키지, 저장소 및 앱 카테고리 검색

패키지 상세v1.1.2

algolia

Algolia는 Flutter 또는 Dart 프로젝트에 쉽게 구현할 수 있도록 Algolia REST API를 래핑한 순수 Dart SDK입니다.

AndroidiOSmacOSWindowsLinux
30일 다운로드
3.1만
좋아요
228
Pub 점수
120

패키지 설치

flutter pub add algolia

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

Algolia는 Flutter 및 Dart 애플리케이션용으로 Algolia 검색 API와의 원활한 통합을 제공하는 Dart SDK입니다. 직관적이고 타입 안전한 메서드로 Algolia의 REST API를 래핑하여 강력한 검색 기능 구현을 간소화합니다. 빠르고 확장 가능한 검색 기능을 원하는 개발자를 위해 설계되었으며, 풀텍스트 검색, 필터링, 여러 플랫폼에서 실시간 결과를 지원합니다. 효율적인 인덱싱과 쿼리 처리를 가능하게 하여 즉각적인 검색 경험을 필요로 하는 앱에 이상적입니다. Android, iOS, macOS, Windows, Linux를 지원하여 다양한 환경에서 일관된 성능을 보장합니다.

사용 사례

  • 모바일 앱에서의 실시간 검색
  • 전자상거래에서 제품 검색
  • 뉴스 앱에서 콘텐츠 탐색
  • 사용자 중심의 필터링 및 패싯팅
  • 대규모 데이터셋 인덱싱 및 쿼리

주요 기능

  • 형 안전한 API 래퍼
  • 크로스 플랫폼 호환성
  • 필터 기반 검색 지원
  • 실시간 쿼리 응답
  • Flutter와의 간편한 통합

적합한 대상

  • 전자상거래 애플리케이션
  • 콘텐츠 중심 앱
  • 빠른 검색이 필요한 앱
  • Dart/Flutter 사용 개발자
  • 확장 가능한 검색이 필요한 프로젝트

고려 사항

  • Algolia 계정과 API 키가 필요합니다
  • Algolia의 백엔드 서비스에 제한됨
  • 복잡한 쿼리에 대해 추가 설정이 필요할 수 있습니다
  • 네트워크 연결에 따라 다름
  • 구독 등급에 따라 레이트 제한이 적용됩니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

Hi Team,

I wanted to give you all a heads-up regarding the Dart package I created for Algolia. Going forward, I won’t be able to offer any further support or development for it. If anyone’s interested in forking it or continuing work independently, please feel free—you’re absolutely welcome to.

Right now, my priorities are focused elsewhere, particularly on projects that are part of my paid work. Unfortunately, this package doesn’t fall into that category, so I need to allocate my time accordingly.

Also, it’s worth mentioning that Algolia has since released their own official Dart package. I believe that should be a solid path forward for most use cases. In the past, they had referenced my package in their documentation and even reached out to me directly, promising a small token of appreciation (a welcome kit, as they described). I shared my details with them at the time, but I never received anything—nor was there any follow-up or continued communication.

I even suggested that they consider contributing directly to this project or possibly taking it under their official umbrella, but that conversation didn’t go anywhere. The silence from their side was disheartening, especially given how this package helped fill a gap in their Flutter ecosystem when no official support existed.

I had much more planned for it—like extended diagnostics, an Alogila UI Package (which would be highly configurable), and more flexible integrations. But with no acknowledgment, and with their preference shifting toward native Android/iOS SDKs over the Dart-based approach I took, it doesn’t seem worthwhile to push further without backing.

So, unless something changes, I’ll be stepping away from this package. If you believe there’s still potential or would like to build on it, I’m happy to see others carry it forward.

Thanks for understanding.


Algolia Search (Dart Client)

Algolia

[UNOFFICIAL] Algolia is a pure dart SDK, wrapped around Algolia REST API for easy implementation for your Flutter or Dart projects.

pub package .github/workflows/dart.yml Build Status

Pub - API Docs - GitHub

Features

  • Query / Search / Similar Query
  • Get Object
  • Add Object
  • Add Objects
  • Replace all objects in an Index
  • Update Object
  • Partial Update Object
  • Delete Object
  • Perform Batch Activities
  • Add Index
  • Delete Index
  • Clear Index
  • Copy Index
  • Move Index
  • Index Settings
  • Push Insights Events

Version compatibility

See CHANGELOG for all breaking (and non-breaking) changes.

Become Contributor

If you wish to contribute in our development process, refer to our Contributing Guidelines

Getting started

You should ensure that you add the router as a dependency in your flutter project.

dependencies:
 algolia: ^1.1.2

You should then run flutter packages upgrade or update your packages in IntelliJ.

Example Project

There is a pretty sweet example project in the example folder. Check it out. Otherwise, keep reading to get up and running.

Setting up

  ///
  /// Initiate static Algolia once in your project.
  ///
  class Application {
    static final Algolia algolia = Algolia.init(
      applicationId: 'YOUR_APPLICATION_ID',
      apiKey: 'YOUR_API_KEY',
    );
  }
  
  void main() async {
    ///
    /// Initiate Algolia in your project
    ///
    Algolia algolia = Application.algolia;

    ///
    /// Perform Query
    ///
    AlgoliaQuery query = algolia.instance.index('contacts').query('john');

    // Perform multiple facetFilters
    query = query.facetFilter('status:published');
    query = query.facetFilter('isDelete:false');

    // Get Result/Objects
    AlgoliaQuerySnapshot snap = await query.getObjects();

    // Checking if has [AlgoliaQuerySnapshot]
    print('Hits count: ${snap.nbHits}');

    ///
    /// Perform Index Settings
    ///
    AlgoliaIndexSettings settingsRef = algolia.instance.index('contact').settings;

    // Get Settings
    Map<String, dynamic> currentSettings = await settingsRef.getSettings();

    // Checking if has [Map]
    print('\n\n');
    print(currentSettings);

    // Set Settings
    AlgoliaSettings settingsData = settingsRef;
    settingsData = settingsData.setReplicas(const ['index_copy_1', 'index_copy_2']);
    AlgoliaTask setSettings = await settingsData.setSettings();

    // Checking if has [AlgoliaTask]
    print('\n\n');
    print(setSettings.data);

    // Pushing Event
    AlgoliaEvent event = AlgoliaEvent(
      eventType: AlgoliaEventType.view,
      eventName: 'View contact',
      index: 'contacts',
      userToken: 'user123',
    );
    await algolia.instance.pushEvents([event]);
  }

Insights

The 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.

  • .pushEvents(List<AlgoliaEvent> events)

Search Parameters

Here is the list of parameters you can use with the search method (search scope). We have managed to include most commonly used parameters for search functionality and there many more to be added in future releases.

We have indicated counts of queryable parameters with their availability status on official Algolia website and what we have managed to support it in this version of the release.

search (1/1)
  • .query(String value)
  • .similarQuery(String value)
attributes (2/2)
  • .setAttributesToRetrieve(List<String> value)
  • .setRestrictSearchableAttributes(List<String> value)
filtering (6/6)
  • .filters(String value)
  • .facetFilter(dynamic value) This can be used multiple times in a query.
  • .setOptionalFilter(String value) This can be used multiple times in a query.
  • .setNumericFilter(String value) This can be used multiple times in a query.
  • .setTagFilter(String value) This can be used multiple times in a query.
  • .setSumOrFiltersScore(bool value)
faceting (4/4)
  • .setFacets(List<String> value)
  • .setMaxValuesPerFacet(int value)
  • .setFacetingAfterDistinct({bool enable = true})
  • .setSortFacetValuesBy(AlgoliaSortFacetValuesBy value)
highlighting-snippeting (6/6)
  • .setAttributesToHighlight(List<String> value)
  • .setAttributesToSnippet(List<String> value)
  • .setHighlightPreTag(String value)
  • .setHighlightPostTag(String value)
  • .setSnippetEllipsisText(String value)
  • .setRestrictHighlightAndSnippetArrays({bool enable = true})
pagination (4/4)
  • .setPage(int value)
  • .setHitsPerPage(int value)
  • .setOffset(int value)
  • .setLength(int value)
typos (5/5)
  • .setMinWordSizeFor1Typo(int value)
  • .setMinWordSizeFor2Typos(int value)
  • .setTypoTolerance(dynamic value)
  • .setAllowTyposOnNumericTokens(bool value)
  • .setDisableTypoToleranceOnAttributes(List<String> value)
geo-search (7/7)
  • .setAroundLatLng(String value)
  • .setAroundLatLngViaIP(bool value)
  • .setAroundRadius(dynamic value)
  • .setAroundPrecision(int value)
  • .setMinimumAroundRadius(int value)
  • .setInsideBoundingBox(List<BoundingBox> value)
  • .setInsidePolygon(List<BoundingPolygonBox> value)
languages (8/11)
  • .setIgnorePlurals(dynamic value)
  • .setRemoveStopWords(dynamic value)
  • .setCamelCaseAttributes(List<String> value)
  • .setDecompoundedAttributes(dynamic value)
  • .setkeepDiacriticsOnCharacters(String value)
  • .setQueryLanguages(List<String> value)
  • .setIndexLanguages(List<String> value)
  • .setNaturalLanguages(List<String> value)
query-rules (3/3)
  • .setEnableRules({bool enabled = false})
  • .setFilterPromotes({bool enabled = false})
  • .setRuleContexts(List<String> value)
personalization (3/3)
  • .setEnablePersonalization({bool enabled = false})
  • .setPersonalizationImpact({required int value})
  • .setUserToken({required String value})
query-strategy (7/7)
  • .setQueryType(QueryType value)
  • .setRemoveWordsIfNoResults(RemoveWordsIfNoResults value)
  • .setAdvancedSyntax({bool enabled = false})
  • .setOptionalWords(List<String> value)
  • .setDisablePrefixOnAttributes(List<String> value)
  • .setDisableExactOnAttributes(List<String> value)
  • .setExactOnSingleWordQuery(ExactOnSingleWordQuery value)
performance (2/2)
  • .setNumericAttributesForFiltering({required List<String> value})
  • .setAllowCompressionOfIntegerArray({bool enabled = false})
advanced (11/15)
  • .setAttributeForDistinct(String value)
  • .setDistinct({dynamic value = 0})
  • .setGetRankingInfo({bool enabled = true})
  • .setClickAnalytics({bool enabled = false})
  • .setAnalytics({bool enabled = false})
  • .setAnalyticsTags(List<String> value)
  • .setSynonyms({bool enabled = false})
  • .setReplaceSynonymsInHighlight({bool enabled = false})
  • .setMaxFacetHits(int value)
  • .setPercentileComputation({bool enabled = false})
  • .setEnableABTest({bool enabled = false})
custom-query (11/15)
  • .custom(String key, dynamic value)
GET RESULT
  • .getObjects()

Settings Parameters

Here is the list of parameters you can use with the settings method (settings scope). We have managed to include most commonly used parameters for settings functionality and there many more to be added in future releases.

We have indicated counts of settings parameters with their availability status on official Algolia website and what we have managed to support it in this version of the release.

attributes (4/4)
  • .setSearchableAttributes(List<String> value)
  • .setAttributesForFaceting(List<String> value)
  • .setUnretrievableAttributes(List<String> value)
  • .setAttributesToRetrieve(List<String> value)
ranking (3/3)
  • .setRanking(List<String> value)
  • .setCustomRanking(List<String> value)
  • .setReplicas(List<String> value)
faceting (2/2)
  • .setMaxValuesPerFacet(int value)
  • .setSortFacetValuesBy(AlgoliaSortFacetValuesBy value)
highlighting-snippeting (6/6)
  • .setAttributesToHighlight(List<String> value)
  • .setAttributesToSnippet(List<String> value)
  • .setHighlightPreTag(String value)
  • .setHighlightPostTag(String value)
  • .setSnippetEllipsisText(String value)
  • .setRestrictHighlightAndSnippetArrays({bool enable = true})
pagination (2/2)
  • .setHitsPerPage(int value)
  • .setPaginationLimitedTo(int value)
typos (7/7)
  • .setMinWordSizeFor1Typo(int value)
  • .setMinWordSizeFor2Typos(int value)
  • .setTypoTolerance(dynamic value)
  • .setAllowTyposOnNumericTokens(bool value)
  • .setDisableTypoToleranceOnAttributes(List<String> value)
  • .setDisableTypoToleranceOnWords(List<String> value)
  • .setSeparatorsToIndex(List<String> value)
languages (8/11)
  • .setIgnorePlurals(dynamic value)
  • .setRemoveStopWords(dynamic value)
  • .setCamelCaseAttributes(List<String> value)
  • .setDecompoundedAttributes(dynamic value)
  • .setkeepDiacriticsOnCharacters(String value)
  • .setQueryLanguages(List<String> value)
  • .setIndexLanguages(List<String> value)
  • .setNaturalLanguages(List<String> value)
query-rules (3/3)
  • .setEnableRules({bool enabled = false})
  • .setFilterPromotes({bool enabled = false})
  • .setRuleContexts(List<String> value)
personalization (3/3)
  • .setEnablePersonalization({bool enabled = false})
  • .setPersonalizationImpact({required int value})
  • .setUserToken({required String value})
query-strategy (7/7)
  • .setQueryType(QueryType value)
  • .setRemoveWordsIfNoResults(RemoveWordsIfNoResults value)
  • .setAdvancedSyntax({bool enabled = false})
  • .setOptionalWords(List<String> value)
  • .setDisablePrefixOnAttributes(List<String> value)
  • .setDisableExactOnAttributes(List<String> value)
  • .setExactOnSingleWordQuery(ExactOnSingleWordQuery value)
performance (2/2)
  • .setNumericAttributesForFiltering({required List<String> value})
  • .setAllowCompressionOfIntegerArray({bool enabled = false})
advanced (11/15)
  • .setAttributeForDistinct(String value)
  • .setDistinct({dynamic value = 0})
  • .setGetRankingInfo({bool enabled = true})
  • .setClickAnalytics({bool enabled = false})
  • .setAnalytics({bool enabled = false})
  • .setAnalyticsTags(List<String> value)
  • .setSynonyms({bool enabled = false})
  • .setReplaceSynonymsInHighlight({bool enabled = false})
  • .setMaxFacetHits(int value)
  • .setPercentileComputation({bool enabled = false})
  • .setEnableABTest({bool enabled = false})
GET Settings
  • .getSettings()
SET Settings
  • .setSettings()

Algolia [Unofficial SDK for Dart] is a Knoxpo original.

카테고리

의존성

의존성 목록 4 개

소스 저장소

이 패키지를 사용하는 프로젝트