AppSearch

AppSearch는 전체 텍스트 검색으로 데이터 색인을 생성하고 데이터를 검색하는 API를 사용하여 로컬에 저장된 구조화된 데이터를 관리하는 기기 전용 검색 라이브러리입니다. 사용자를 위한 맞춤 인앱 검색 기능을 빌드하는 데 사용합니다.
최근 업데이트 안정화 버전 출시 후보 버전 베타 버전 알파 버전
2024년 12월 11일 - - - 1.1.0-alpha07

종속 항목 선언

AppSearch의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.

Groovy

dependencies {
    def appsearch_version = "1.1.0-alpha05"

    implementation "androidx.appsearch:appsearch:$appsearch_version"
    // Use kapt instead of annotationProcessor if writing Kotlin classes
    annotationProcessor "androidx.appsearch:appsearch-compiler:$appsearch_version"

    implementation "androidx.appsearch:appsearch-local-storage:$appsearch_version"
    // PlatformStorage is compatible with Android 12+ devices, and offers additional features
    // to LocalStorage.
    implementation "androidx.appsearch:appsearch-platform-storage:$appsearch_version"
}

Kotlin

dependencies {
    val appsearch_version = "1.1.0-alpha05"

    implementation("androidx.appsearch:appsearch:$appsearch_version")
    // Use annotationProcessor instead of kapt if writing Java classes
    kapt("androidx.appsearch:appsearch-compiler:$appsearch_version")

    implementation("androidx.appsearch:appsearch-local-storage:$appsearch_version")
    // PlatformStorage is compatible with Android 12+ devices, and offers additional features
    // to LocalStorage.
    implementation("androidx.appsearch:appsearch-platform-storage:$appsearch_version")
}

종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.

새로운 문제 제출하기

자세한 내용은 Issue Tracker 문서를 참고하세요.

버전 1.1

버전 1.1.0-alpha07

2024년 12월 11일

androidx.appsearch:appsearch-*:1.1.0-alpha07이 출시되었습니다. 버전 1.1.0-alpha07에는 이 커밋이 포함되어 있습니다.

새로운 기능

  • 아직 안정화되지 않은 새 API 노출 영역에 ExperimentalAppSearchApi 주석을 추가합니다. (Ib09f4)
  • AppSearchSession#openBlobForWriteAsync 및 관련 메서드를 통한 바이너리 blob 데이터의 효율적인 저장 및 공유 지원
  • matchScoreExpression 함수를 통해 표현식에 점수를 부여하여 쿼리 결과를 필터링하는 기능 지원 (Id525a)
  • 상위 문서에서 하위 문서로 삭제를 전파하는 기능을 지원합니다. (Ia032d)
  • 약간의 품질 손실로 삽입 성능을 높이는 삽입 양자화 API를 지원합니다. (Id8a07)
  • SearchSpec에서 addFilterDocumentIds API를 사용하여 특정 문서로 검색을 제한하는 기능을 지원합니다. (I7c6f1)

API 변경사항

  • 상위 유형 정보를 GenericDocument에서 SearchResult로 이동합니다. (I34a1d)
  • TakenAction API에서 DismissActionImpressionAction를 비롯한 새로운 작업 유형을 지원합니다. (I0c6c7)
  • 새로운 AppSearch 내장 스키마 WebPage를 추가했습니다. (I28127)

버전 1.1.0-alpha06

2024년 10월 16일

androidx.appsearch:appsearch-*:1.1.0-alpha06이 출시되었습니다. 버전 1.1.0-alpha06에는 이 커밋이 포함되어 있습니다.

API 변경사항

  • PropertyDefined 쿼리 함수를 나타내는 노드를 추가했습니다. (I1aeaf)
  • 숫자 검색 및 속성 제한을 나타내는 노드를 추가합니다. (I963a9)
  • GetSearchStringParameter 쿼리 함수를 나타내는 노드를 추가합니다. (I4f99b)
  • HasProperty 쿼리 함수를 나타내는 노드를 추가합니다. (I9c1c5)
  • AST에서 함수를 구현하기 위한 인터페이스를 추가했습니다. (I9d42e)
  • AND 및 OR 연산자를 추가합니다. (Iaa442)
  • AST에서 쿼리의 논리적 부정을 나타내는 NegationNode를 추가합니다. (Ia855a)
  • 노드를 정의하기 위해 AppSearch에 노드 인터페이스를 추가합니다. (If42fb)
  • AppSearch의 Experimental API 주석을 추가합니다. (I3e57c)

버그 수정

  • 보류 기간에 TextNodes를 추가합니다. (Iefd02)

보안 수정사항

  • 이 변경사항부터 androidx는 CVE-2024-7254를 해결하기 위해 protobuf 4.28.2를 기준으로 컴파일합니다. 취약점 위험을 해결하려면 androidx.appsearch:appsearch-external-protobuf 종속 항목을 최신 1.1.0-alpha06으로 업그레이드하세요.

버전 1.1.0-alpha05

2024년 9월 4일

androidx.appsearch:appsearch-*:1.1.0-alpha05이 출시되었습니다. 버전 1.1.0-alpha05에는 이 커밋이 포함되어 있습니다.

API 변경사항

  • 불필요한 setEmbeddingSearchEnabledgetEmbeddingSearchEnabled가 지원 중단됩니다. setListFilterTokenizeFunctionEnabledgetListFilterTokenizeFunctionEnabled를 삭제합니다. 'tokenize' 쿼리 함수를 삭제했습니다. getSearchStringParameter 쿼리 함수 및 addSearchStringParameter 함수로 대체되었습니다. (I09f5a)
  • Alarm#getComputingDevice의 이름을 getOriginatingDevice로 바꿉니다. (I63121)

버전 1.1.0-alpha04

2024년 8월 7일

androidx.appsearch:appsearch-*:1.1.0-alpha04이 출시되었습니다. 버전 1.1.0-alpha04에는 이 커밋이 포함되어 있습니다.

새로운 기능

  • LocalStorage의 상당한 APK 크기 비용 없이 이전 기기에서 AppSearch를 사용할 수 있는 새로운 PlayServicesStorage 구현을 지원합니다. 이 저장소 구현은 Play 서비스 앱 내에 앱 데이터를 저장하는 방식으로 작동합니다.
  • Android 15를 실행하는 기기에서 새 API를 지원합니다.
  • 벡터를 임베딩하여 데이터베이스 검색을 지원하므로 대략적인 일치가 가능합니다. (I2b41b)
  • AppSearch 스키마 모델 내에서 상위 유형 및 다형성을 지원합니다. (I06118)
  • 후속 검색 중에 품질을 개선하기 위해 앱이 결과가 클릭되거나 중단되었을 때 보고할 수 있는 TakenAction API를 지원합니다. (I54091)
  • @Document.BuilderProducer 주석을 도입하여 주석 프로세서에서 빌더가 있는 클래스를 지원합니다. (Iec30a)
  • 중첩된 문서의 색인을 생성할 속성을 더 세분화하여 제어할 수 있습니다. (Iec30a)
  • 특정 문서 속성으로 검색을 필터링하는 기능을 지원합니다. (Ib2659)
  • 공개 상태 설정의 OR 및 AND를 허용하여 더 세분화된 공개 상태 설정을 지원합니다. (I0274b)
  • 소유 앱의 존재를 볼 수 있는 모든 앱에 데이터 가시성을 부여하는 기능 (공개 가시성)을 지원합니다. (I992e4)
  • 특정 속성에 데이터가 채워진 결과만 검색할 수 있습니다. (I7d94f)
  • 개인 프로필에서 엔터프라이즈 연락처를 검색할 수 있도록 지원합니다. (Idd587)

API 변경사항

  • AppSearch의 Document.DocumentProperty 주석에 indexableNestedPropertiesListinheritIndexableNestedPropertiesFromSuperclass 주석 매개변수를 추가하여 특정 중첩된 속성 경로의 색인을 생성할 수 있도록 합니다. (Iec30a)
  • AppSearch 주석 프로세서에서 빌더 인스턴스를 만드는 빌더 생성자 지원 (I265c9)
  • 다형성에 관한 상위 유형 설정을 지원하도록 AppSearch 주석 프로세서를 업데이트했습니다. (I06118)
  • 공개 상태 설정을 지우기 위한 GetSchemaRequest 메서드를 추가했습니다. (I38379)
  • AppSearch에서 다형성을 위해 addParentType를 지원합니다. (Ida14a)
  • 추가 순위 표현식을 위한 API를 추가했습니다. (I5d9f4)
  • SearchAction API를 추가했습니다. (I54091)
  • AppSearch 유형의 설명 필드를 추가했습니다. (I84762)
  • AppSearch에 임베딩 검색 쿼리 및 순위 지정 API 온보딩 (I0f6c3)
  • getDeletionPropagation를 삭제합니다. (I21192)

버전 1.1.0-alpha03

2023년 5월 24일

androidx.appsearch:appsearch-*:1.1.0-alpha03이 출시되었습니다. 버전 1.1.0-alpha03에 포함된 커밋을 확인하세요.

새로운 기능

  • 고급 쿼리 API, 고급 점수 API, 숫자 검색을 지원합니다. (I02d48)
  • 단일 앱의 로컬 저장소 내 모든 데이터베이스를 검색하는 LocalStorage.createGlobalSearchSession API를 추가합니다. (Id3c89)
  • ID별로 문서를 조인하는 API를 추가했습니다 (Iaecfa).
  • RANKING_STRATEGY_RELEVANCE_SCORING를 사용할 때 특정 속성이 더 중요하다는 것을 표시하는 속성 가중치를 지원합니다. (I069b9)
  • AppSearch에서 인물 자료 쿼리를 위한 인물 및 ContactPoint를 추가합니다. (Ia58f9)
  • http://schema.org/ImageObject를 모델로 한 새 문서 유형 ImageObject를 추가했습니다. (I6a0c0)
  • AppSearch의 해석 없이 속성을 추가할 수 있는 VERBATIM 토큰라이저를 추가합니다. (I47bc0)
  • 이메일 주소의 토큰화를 허용하는 토큰라이저 유형으로 RFC822_TOKENIZATION를 추가했습니다. (I8a390)
  • 디버그 보기에서 전역 검색을 사용 설정합니다. (I51fb2)

API 변경사항

  • ListenableFuture를 반환하고 Async 접미사가 없는 메서드가 삭제되었습니다. (I0515f)
  • Document 클래스로 프로젝션을 구성하는 기능을 추가합니다. (I94576)
  • Thing의 필드를 Alarm, AlarmInstance, Timer, Stopwatch, StopwatchLap, ContactPoint, Person에 추가했습니다. (Id876c)

버그 수정

  • appsearch-platform-storage에서 Android 13 기능을 완전히 지원합니다. (Ia8e61)
  • 상속을 사용할 때 스키마 이름 및 비공개 필드를 재정의하는 문제 수정

버전 1.1.0-alpha02

2022년 8월 24일

androidx.appsearch:appsearch-*:1.1.0-alpha02가 출시되었습니다. 버전 1.1.0-alpha02에 포함된 커밋을 확인하세요.

새로운 기능

  • 색인을 처음부터 다시 빌드하는 대신 색인 압축을 사용하여 최적화 도구 프로세스를 가속화합니다.
  • 기본 로깅 태그를 'icing'에서 'AppSearchIcing'으로 변경했습니다. 기본적으로 INFO 메시지를 로깅합니다.

API 변경사항

  • 경로 작업을 위한 새로운 PropertyPath 객체와 PropertyPath를 허용하는 새로운 addProjection 메서드가 추가되었습니다. (I45588)
  • AppSearch 기본 제공 유형에 builtin:Thing을 추가했습니다. (I55427)
  • GenericDocument에서 빈 속성 이름을 더 빠르게 차단합니다. 이전에는 색인 생성 시 차단되었지만 이제 GenericDocument.Builder.build() 시간에 차단됩니다. (I9e780)

버그 수정

  • RELEVANCE 스코어링 성능을 개선하기 위해 불필요한 문자열 형식을 삭제했습니다.
  • 읽을 수 없거나 삭제된 문서가 있을 때 페이지로 나누기를 보다 효율적으로 실행합니다.
  • 취소된 쿼리에 대한 가비지 컬렉션을 구현했습니다.
  • 문서의 중첩된 색인 생성 지원을 수정합니다. 이전에는 indexNestedProperties를 무시했습니다. (Iae9a6)

외부 기여

  • Shea Smith: 문서의 중첩된 색인 생성 지원을 수정합니다. (Iae9a6)

버전 1.1.0-alpha01

2022년 6월 15일

androidx.appsearch:appsearch-*:1.1.0-alpha01이 출시되었습니다. 버전 1.1.0-alpha01은 비공개 출시 전 브랜치에서 개발되었으며 공개 커밋이 없습니다.

API 변경사항

  • ListenableFuture를 반환하는 모든 메서드의 이름에 Async 접미사가 붙었습니다. 예를 들어 getSchemagetSchemaAsync로 바뀌었습니다. 이전 버전은 지원 중단되었으며 향후 출시에서 삭제될 예정입니다.

새로운 기능

  • appsearch-built-types의 첫 번째 버전. 이 프로젝트에는 schema.org 기반의 몇 가지 기본 유형이 포함되어 있어 클라이언트가 공통 객체를 위한 자체 유형을 정의하는 대신 편리하게 사용할 수 있습니다. 향후 버전에는 더 많은 유형이 추가될 예정입니다.
  • ShortcutAdapter를 사용하여 AppSearch 문서를 ShortcutInfoCompat으로 변환하는 기능. 이렇게 하면 클라이언트가 core-google-shortcuts 라이브러리를 사용하여 AppSearch 문서를 Google에 공유할 수 있습니다.
  • @Document 클래스로 상속을 사용하는 기능. 필드를 교체하거나 수정할 수는 없지만, @Document 주석이 달린 클래스를 확장하여 새 필드를 추가할 수 있습니다.
  • 클라이언트가 액세스할 수 있는 유형이 변경되었거나 이러한 유형의 문서가 추가, 수정 또는 삭제될 때 알림을 등록할 수 있는 새로운 Observer API. 중요: 현재 구현에서는 앱이 실행 중일 때만 알림을 전달합니다. 현재로서는 앱이 중지된 동안 발생한 변경사항을 검사할 수 있는 방법이 없습니다. 따라서 완전성을 위해 이 API를 사용해서는 안 됩니다.
  • MatchInfo#getPropertyPath에서 반환한 속성 경로를 완전히 처리하고 검사할 수 있는 속성 파서 API
  • 보기 권한을 부여한 다른 앱의 문서와 스키마를 가져올 수 있는 전 세계 getById 및 전 세계 getSchema API
  • 액세스할 수 있는 데이터의 공개 상태 정보를 getSchema로 가져오는 기능
  • 특정 Android 권한(허용 목록에 있는 일부 권한으로 제한)을 보유한 앱에 보기 권한을 부여하는 기능
  • 이전에 지원되던 hasFoo() 스타일 외에 주석 프로세서의 불리언 필드를 위한 isFoo() 스타일의 getter 지원
  • @RequiresFeature로 보호되는 새로운 기능 지원. AppSearchSession#getFeatures를 사용하여 현재 백엔드에서 지원하는 항목을 확인할 수 있습니다.
  • 개별 문서의 13,000개 토큰 한도 삭제
  • ASCII가 아닌 문자 및 영숫자가 아닌 문자(예: 그림 이모티콘)에 매칭 허용

버그 수정

  • 호환되지 않는 중첩된 유형을 재정의할 때 SetSchema에 실패하는 버그를 수정했습니다.
  • AppSearch @Document 클래스로 사용되고 있는 @AutoValue 주석이 달린 클래스를 완전히 지원하도록 수정했습니다.
  • Document 클래스의 반복되는 목록 및 기타 문제와 관련된 일부 비정상 종료 문제를 수정했습니다.
  • 특정 상황에서 접두어 검색이 다운되는 버그를 수정했습니다.
  • GetStorageInfo에서 IO 실패가 발생했을 때 잘못된 값을 반환하는 일부 버그를 수정했습니다.
  • 문서를 읽을 때 발생하던 BUSADDERR 오류를 수정했습니다.
  • 형식이 지정되지 않은 지문 출력으로 인해 발생하는 Logcat 손상을 수정했습니다.
  • IO 실패로 인한 NPE 문제를 수정했습니다.
  • GetSchemaType, Get, Delete, DeleteByNamespace, DeleteBySchemaType의 메모리 누수를 수정했습니다.

버전 1.0.0

버전 1.0.0-alpha04

2021년 11월 3일

androidx.appsearch:appsearch-*:1.0.0-alpha04가 출시되었습니다. 버전 1.0.0-alpha04에 포함된 커밋을 확인하세요.

새로운 기능

  • Guava ListenableFuture 종속 항목을 자동으로 API 종속 항목으로 가져옵니다.

API 변경사항

  • 각각의 일치 항목에 관한 자세한 정보를 제공하는 SearchResult#getSubmatchRange()와 SearchResult#getSubmatch()를 추가했습니다. (I2fef6)
  • 패키지 이름과 인증서별로 데이터를 공유하기 위한 PackageIdentifier 지문 생성 방법을 명확하게 문서화했습니다.

버그 수정

  • 결과 집합이 끝난 후에 사용자가 결과 페이지를 가져오려고 하면 발생하는 비정상 종료 문제를 수정했습니다.
  • 잘못된 네임스페이스만 쿼리 필터로 제공된 경우 모든 네임스페이스를 쿼리하는 문제를 수정했습니다.
  • 잘못된 네임스페이스만 remove-by-query filtersLo로 제공된 경우 모든 네임스페이스가 삭제되는 문제를 수정했습니다.
  • 대용량 문서에서 특정 지점 이후 문서 데이터의 색인 생성이 중지되는 문제를 수정했습니다.
  • 토큰화할 때 ASCII가 아닌 숫자가 포함된 세그먼트가 누락되는 문제를 수정했습니다.
  • 초기화를 방해하는 잠재적 불량 상태를 해결하기 위해 초기화 시도가 연속 실패할 때 실행되는 검사를 추가합니다.

버전 1.0.0-alpha03

2021년 7월 21일

androidx.appsearch:appsearch-*:1.0.0-alpha03이 출시되었습니다. 버전 1.0.0-alpha03에 포함된 커밋을 확인하세요.

새로운 기능

  • 클라이언트가 Android S에서 출시되는 새로운 android.app.appsearch.AppSearchManager 서비스와 함께 AppSearch API를 사용할 수 있도록 플랫폼 저장소 백엔드가 출시되었습니다. 자세한 내용은 AppSearch 개발자 가이드를 참고하세요.
  • AutoValue에 주석 프로세서를 지원합니다.
  • 단일 문자열 속성의 최대 크기 제한을 삭제했습니다.
  • 초기화 지연 시간을 줄이기 위한 새로운 저장 형식을 제공합니다.
  • 이전 저장 형식에서 새 저장 형식으로의 일회성 내부 데이터를 이전했습니다.

버그 수정

  • 새 문서 삽입 시 최대 문서 한도가 정확하게 적용됩니다.
  • AppSearchSession 생성 중 발생하는 비정상 종료 문제가 해결되었습니다.
  • SetSchema에서 이전 버전과의 비호환성 및 색인 비호환성을 일부 감지하지 못하는 버그를 수정했습니다.

버전 1.0.0-alpha02

2021년 6월 30일

androidx.appsearch:appsearch:1.0.0-alpha02, androidx.appsearch:appsearch-compiler:1.0.0-alpha02androidx.appsearch:appsearch-local-storage:1.0.0-alpha02가 출시되었습니다. 버전 1.0.0-alpha02에 포함된 커밋을 확인하세요.

새로운 기능

  • 한국어/중국어/일본어/태국어를 완전히 지원합니다.
  • androidx.appsearch:appsearch-local-storage의 크기를 줄였습니다.
  • 반복 속성의 최대 크기 제한을 삭제했습니다.
  • 빌더 클래스의 재사용을 허용합니다.
  • 더 쉬운 디버깅을 위해 특정 객체의 toString()을 개선했습니다.
  • Javadoc 문서를 개선했습니다.

API 변경사항

  • SearchResult#getMatches에서 SearchResult#getMatchInfos로 이름이 변경되었습니다.
  • @Document.Int64Property에서 @Document.LongProperty로 이름이 변경되었습니다.

버그 수정

  • 결과 스니펫 계산을 개선하고 수정했습니다.
  • AppSearchSession 초기화에서 발생하는 버그를 수정했습니다.

버전 1.0.0-alpha01

2021년 5월 5일

androidx.appsearch:appsearch:1.0.0-alpha01, androidx.appsearch:appsearch-compiler:1.0.0-alpha01androidx.appsearch:appsearch-local-storage:1.0.0-alpha01이 출시되었습니다. 버전 1.0.0-alpha01에 포함된 커밋을 확인하세요.

새로운 기능

AppSearch는 전체 텍스트 검색을 통해 데이터 색인을 생성하고 데이터를 검색하는 API를 사용하여 로컬에 저장된 구조화된 데이터를 관리하는 검색 라이브러리입니다. 사용자를 위한 맞춤 인앱 검색 기능을 빌드하는 데 사용합니다. 최초 출시 버전은 1.0.0-alpha01입니다.