AppSearch

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

종속 항목 선언

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-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에 포함된 커밋을 확인하세요.

새로운 기능

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

API 변경사항

  • indexableNestedPropertiesListinheritIndexableNestedPropertiesFromSuperclass 주석 매개변수를 AppSearch의 Document.DocumentProperty 주석에 추가하여 특정 중첩 속성 경로의 색인을 생성할 수 있습니다. 추가했습니다. (Iec30a)
  • AppSearch 주석 프로세서에서 빌더 인스턴스를 만들 수 있도록 빌더 생성자를 지원합니다. (I265c9)
  • 다형성의 상위 유형 설정을 지원하도록 AppSearch 주석 프로세서를 업데이트했습니다. (I06118)
  • 공개 상태 설정을 지우는 GetSchemaRequest 메서드를 추가합니다. (I38379)
  • AppSearch에서 다형성에 대한 addParentType를 지원합니다. (Ida14a)
  • 추가 순위 표현식을 위한 API를 추가합니다. (I5d9f4)
  • SearchAction API를 추가합니다. (I54091)
  • AppSearch 유형의 설명 필드를 추가합니다. (I84762)
  • 임베딩 검색어 및 순위 API를 AppSearch에 온보딩합니다. (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에서 사람 코퍼스를 쿼리하기 위해 Person 및 ContactPoint를 추가합니다. 추가했습니다. (Ia58f9)
  • http://schema.org/ImageObject를 모델링한 새 문서 유형 ImageObject을 추가했습니다. 추가했습니다. (I6a0c0)
  • AppSearch에 의한 해석 없이 속성을 추가할 수 있는 VERBATIM tokenizer를 추가합니다. 추가했습니다. (I47bc0)
  • 이메일 주소를 토큰화할 수 있도록 RFC822_TOKENIZATION를 tokenizer 유형으로 추가했습니다. 추가했습니다. (I8a390)
  • 디버그 보기에서 전체 검색을 사용하도록 설정합니다. 추가했습니다. (I51fb2)

API 변경사항

  • ListenableFuture를 반환하고 비동기 접미사가 없는 메서드가 삭제되었습니다. 추가했습니다. (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입니다.