AppSearch

AppSearch adalah library penelusuran di perangkat untuk mengelola data terstruktur yang disimpan secara lokal, dengan API untuk mengindeks data dan mengambil data menggunakan penelusuran teks lengkap. Gunakan AppSearch untuk membuat kemampuan penelusuran dalam aplikasi khusus untuk pengguna Anda.
Update Terbaru Rilis Stabil Kandidat Rilis Rilis Beta Rilis Alfa
11 Desember 2024 - - - 1.1.0-alpha07

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada AppSearch, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk informasi selengkapnya.

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

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")
}

Untuk mengetahui informasi dependensi selengkapnya, lihat Menambahkan Dependensi Build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 1.1

Versi 1.1.0-alpha07

11 Desember 2024

androidx.appsearch:appsearch-*:1.1.0-alpha07 dirilis. Versi 1.1.0-alpha07 berisi commit ini.

Fitur Baru

  • Menambahkan anotasi ExperimentalAppSearchApi ke platform API baru yang belum stabil. (Ib09f4)
  • Dukungan untuk menyimpan dan membagikan data blob biner secara efisien melalui AppSearchSession#openBlobForWriteAsync dan metode terkait
  • Dukungan untuk memfilter hasil kueri dengan skor ekspresi melalui fungsi matchScoreExpression (Id525a)
  • Dukungan untuk menyebarkan penghapusan dari dokumen induk ke dokumen turunan. (Ia032d)
  • Dukungan untuk API kuantisasi penyematan guna meningkatkan performa penyematan dengan sedikit penurunan kualitas. (Id8a07)
  • Dukungan untuk membatasi penelusuran ke dokumen tertentu menggunakan addFilterDocumentIds API di SearchSpec. (I7c6f1)

Perubahan API

  • Pindahkan informasi jenis induk dari GenericDocument ke SearchResult. (I34a1d)
  • Dukungan untuk jenis tindakan baru di TakenAction API, termasuk DismissAction dan ImpressionAction. (I0c6c7)
  • Menambahkan WebPage skema bawaan AppSearch baru. (I28127)

Versi 1.1.0-alpha06

16 Oktober 2024

androidx.appsearch:appsearch-*:1.1.0-alpha06 dirilis. Versi 1.1.0-alpha06 berisi commit ini.

Perubahan API

  • Menambahkan node yang mewakili fungsi kueri PropertyDefined. (I1aeaf)
  • Tambahkan node untuk mewakili penelusuran numerik dan batasan properti. (I963a9)
  • Tambahkan node yang mewakili fungsi kueri GetSearchStringParameter. (I4f99b)
  • Tambahkan node yang mewakili fungsi kueri HasProperty. (I9c1c5)
  • Menambahkan antarmuka untuk mengimplementasikan fungsi di AST. (I9d42e)
  • Tambahkan operator DAN dan ATAU. (Iaa442)
  • Menambahkan NegationNode untuk merepresentasikan negasi logis kueri di AST. (Ia855a)
  • Tambahkan antarmuka Node ke AppSearch untuk menentukan node. (If42fb)
  • Menambahkan anotasi API Eksperimental untuk AppSearch. (I3e57c)

Perbaikan Bug

  • Menambahkan TextNodes untuk istilah penangguhan. (Iefd02)

Perbaikan Keamanan

  • Mulai perubahan ini, androidx dikompilasi terhadap protobuf 4.28.2 untuk mengatasi CVE-2024-7254. Upgrade dependensi Anda pada androidx.appsearch:appsearch-external-protobuf ke versi terbaru 1.1.0-alpha06 untuk mengatasi risiko kerentanan.

Versi 1.1.0-alpha05

4 September 2024

androidx.appsearch:appsearch-*:1.1.0-alpha05 dirilis. Versi 1.1.0-alpha05 berisi commit ini.

Perubahan API

  • Menghentikan penggunaan setEmbeddingSearchEnabled dan getEmbeddingSearchEnabled yang tidak perlu. Menghapus setListFilterTokenizeFunctionEnabled dan getListFilterTokenizeFunctionEnabled. Menghapus fungsi kueri 'tokenize'. Diganti dengan fungsi kueri getSearchStringParameter dan fungsi addSearchStringParameter. (I09f5a)
  • Mengganti nama Alarm#getComputingDevice menjadi getOriginatingDevice. (I63121)

Versi 1.1.0-alpha04

7 Agustus 2024

androidx.appsearch:appsearch-*:1.1.0-alpha04 dirilis. Versi 1.1.0-alpha04 berisi commit ini.

Fitur Baru

  • Dukungan untuk implementasi PlayServicesStorage baru, yang memungkinkan penggunaan AppSearch di perangkat lama tanpa menimbulkan biaya ukuran apk LocalStorage yang signifikan. Implementasi penyimpanan ini berfungsi dengan menyimpan data aplikasi dalam aplikasi Layanan Play.
  • Dukungan untuk API baru di perangkat yang menjalankan Android 15.
  • Mendukung penelusuran database dengan menyematkan vektor, sehingga memungkinkan pencocokan fuzzy. (I2b41b)
  • Mendukung jenis induk dan polimorfisme dalam model skema AppSearch. (I06118)
  • Mendukung TakenAction API yang memungkinkan aplikasi melaporkan saat hasil diklik atau ditinggalkan, untuk peningkatan kualitas selama penelusuran berikutnya. (I54091)
  • Mendukung class dengan builder di pemroses anotasi dengan memperkenalkan anotasi @Document.BuilderProducer baru. (Iec30a)
  • Mendukung kontrol yang lebih terperinci atas properti dokumen bertingkat yang akan diindeks. (Iec30a)
  • Dukungan untuk memfilter penelusuran ke properti dokumen tertentu. (Ib2659)
  • Mendukung setelan visibilitas yang lebih terperinci dengan mengizinkan OR dan AND setelan visibilitas. (I0274b)
  • Dukungan untuk memberikan visibilitas data ke semua aplikasi yang dapat melihat keberadaan aplikasi pemilik (visibilitas publik). (I992e4)
  • Dukungan untuk hanya mengambil hasil yang memiliki data yang diisi di properti tertentu. (I7d94f)
  • Dukungan untuk mengambil kontak perusahaan di profil pribadi. (Idd587)

Perubahan API

  • Tambahkan parameter anotasi indexableNestedPropertiesList dan inheritIndexableNestedPropertiesFromSuperclass ke anotasi Document.DocumentProperty AppSearch untuk mengizinkan pengindeksan jalur properti bertingkat tertentu. (Iec30a)
  • Mendukung konstruktor builder untuk membuat instance builder di pemroses anotasi AppSearch (I265c9)
  • Memperbarui pemroses anotasi AppSearch untuk mendukung penetapan jenis induk untuk polimorfisme (I06118)
  • Menambahkan metode GetSchemaRequest untuk menghapus setelan visibilitas (I38379)
  • Mendukung addParentType di AppSearch untuk polimorfisme (Ida14a)
  • Menambahkan API untuk ekspresi peringkat tambahan (I5d9f4)
  • Menambahkan SearchAction API (I54091)
  • Menambahkan kolom deskripsi untuk jenis AppSearch (I84762)
  • Mengaktifkan API kueri penelusuran dan peringkat penyematan ke AppSearch (I0f6c3)
  • Menghapus getDeletionPropagation (I21192)

Versi 1.1.0-alpha03

24 Mei 2023

androidx.appsearch:appsearch-*:1.1.0-alpha03 dirilis. Versi 1.1.0-alpha03 berisi commit ini.

Fitur Baru

  • Dukungan untuk API kueri lanjutan, API penskoran lanjutan, dan penelusuran numerik. (I02d48)
  • Menambahkan LocalStorage.createGlobalSearchSession API untuk menelusuri semua database dalam penyimpanan lokal satu aplikasi. (Id3c89)
  • Menambahkan API untuk menggabungkan dokumen berdasarkan ID (Iaecfa)
  • Mendukung bobot properti untuk menandai properti tertentu yang lebih penting saat menggunakan RANKING_STRATEGY_RELEVANCE_SCORING. (I069b9)
  • Tambahkan Person dan ContactPoint untuk mengkueri korpus Person di AppSearch. (Ia58f9)
  • Menambahkan jenis Dokumen baru ImageObject yang dimodelkan setelah http://schema.org/ImageObject. (I6a0c0)
  • Menambahkan tokenizer VERBATIM yang memungkinkan penambahan properti tanpa interpretasi oleh AppSearch. (I47bc0)
  • Menambahkan RFC822_TOKENIZATION sebagai jenis pemisah kata, yang memungkinkan tokenisasi alamat email. (I8a390)
  • Aktifkan Penelusuran Global di Tampilan Debug. (I51fb2)

Perubahan API

  • Menghapus metode yang menampilkan ListenableFuture dan tidak memiliki akhiran Async. (I0515f)
  • Menambahkan kemampuan untuk mengonfigurasi proyeksi menurut class Document. (I94576)
  • Menambahkan kolom dari Thing ke Alarm, AlarmInstance, Timer, Stopwatch, StopwatchLap, ContactPoint, dan Person (Id876c)

Perbaikan Bug

  • Sepenuhnya mendukung fitur Android 13 di appsearch-platform-storage (Ia8e61)
  • Memperbaiki masalah penggantian nama skema dan kolom pribadi saat menggunakan pewarisan.

Versi 1.1.0-alpha02

24 Agustus 2022

androidx.appsearch:appsearch-*:1.1.0-alpha02 dirilis. Versi 1.1.0-alpha02 berisi commit ini.

Fitur Baru

  • Mempercepat proses Optimize (Pengoptimalan) menggunakan pemadatan indeks, bukan membuat ulang indeks dari awal
  • Mengubah tag logging native dari "icing" menjadi "AppSearchIcing", secara default mencatat pesan INFO

Perubahan API

  • Menambahkan objek PropertyPath baru untuk digunakan dengan jalur, dan metode addProjection baru untuk menerima PropertyPath. (I45588)
  • Menambahkan builtin:Thing ke jenis bawaan AppSearch (I55427)
  • Mencegah nama properti kosong di GenericDocument lebih cepat – sebelumnya nama properti dicegah pada waktu pengindeksan, tetapi sekarang dicegah pada waktu GenericDocument.Builder.build() (I9e780)

Perbaikan Bug

  • Menghapus pemformatan string yang tidak perlu untuk meningkatkan performa penskoran RELEVANCE
  • Penomoran halaman yang lebih efisien saat menemukan dokumen yang dihapus atau tidak dapat dibaca
  • Menerapkan pembersihan sampah memori untuk kueri yang diabaikan
  • Memperbaiki dukungan pengindeksan bertingkat untuk Dokumen. Sebelumnya indexNestedProperties diabaikan. (Iae9a6)

Kontribusi Eksternal

  • Shea Smith: Memperbaiki dukungan pengindeksan bertingkat untuk Dokumen. (Iae9a6)

Versi 1.1.0-alpha01

15 Juni 2022

androidx.appsearch:appsearch-*:1.1.0-alpha01 dirilis. Versi 1.1.0-alpha01 dikembangkan di cabang pra-rilis pribadi dan tidak memiliki commit publik.

Perubahan API

  • Semua metode yang menampilkan ListenableFuture telah diganti namanya agar memiliki akhiran Async. Misalnya, getSchema telah diganti namanya menjadi getSchemaAsync. Versi sebelumnya tidak digunakan lagi dan akan dihapus pada rilis mendatang.

Fitur Baru

  • Rilis pertama appsearch-builtin-types. Project ini berisi beberapa jenis bawaan berdasarkan schema.org yang menurut klien mudah digunakan, bukan menentukan jenisnya sendiri untuk objek umum. Jenis lainnya akan ditambahkan dalam rilis mendatang.
  • Kemampuan menggunakan ShortcutAdapter untuk mengonversi Dokumen AppSearch menjadi ShortcutInfoCompat. Ini memberi klien cara untuk berbagi dokumen AppSearch ke Google menggunakan library core-google-shortcuts
  • Kemampuan untuk menggunakan warisan dengan class @Document. Kolom tidak dapat diganti atau diubah, tetapi kolom baru dapat ditambahkan dengan memperluas class yang dianotasi dengan @Document.
  • Observer API baru yang memungkinkan klien mendaftar untuk notifikasi jika jenis yang aksesnya mereka miliki telah berubah atau jika dokumen jenis tersebut ditambahkan, diubah, atau dihapus. PENTING: Implementasi saat ini hanya mengirimkan notifikasi saat aplikasi Anda sedang berjalan. Saat ini tidak ada cara untuk memeriksa perubahan yang telah terjadi saat aplikasi Anda dihentikan. Oleh karena itu, Anda tidak boleh mengandalkan API ini untuk kelengkapan.
  • Property parser API yang memungkinkan Anda sepenuhnya menangani dan memeriksa jalur properti yang ditampilkan oleh MatchInfo#getPropertyPath.
  • Global getById dan global getSchema API untuk mengambil dokumen dan skema dari aplikasi lain yang telah memberi Anda visibilitas.
  • Kemampuan untuk mengambil informasi visibilitas di getSchema untuk data yang dapat Anda akses
  • Kemampuan untuk memberikan visibilitas ke aplikasi yang memiliki izin Android tertentu (dibatasi untuk serangkaian daftar izin yang disetujui)
  • Mendukung pengambil gaya isFoo() untuk kolom boolean dalam pemroses anotasi, selain gaya hasFoo() yang didukung sebelumnya
  • Dukungan untuk fitur baru yang dilindungi @RequiresFeature. Gunakan AppSearchSession#getFeatures untuk menentukan apa yang didukung oleh backend saat ini.
  • Menghapus batas token ~13k pada setiap dokumen
  • Mengizinkan pencocokan pada karakter non-ascii+non-alfanumerik, seperti emoji

Perbaikan Bug

  • Memperbaiki bug yang akan menggagalkan SetSchema saat mengganti jenis bertingkat yang tidak kompatibel.
  • Memperbaiki agar sepenuhnya mendukung class beranotasi @AutoValue yang digunakan sebagai class @Document AppSearch
  • Memperbaiki beberapa error yang berkaitan dengan daftar berulang class Dokumen dan masalah lainnya
  • Memperbaiki bug yang akan menyebabkan error pada penelusuran awalan dalam keadaan tertentu
  • Memperbaiki bug minor di GetStorageInfo yang akan menampilkan nilai salah saat mengalami kegagalan IO
  • Memperbaiki masalah BUSADDERR saat membaca dokumen
  • Memperbaiki kerusakan logcat yang disebabkan oleh pencetakan sidik jari yang tidak diformat
  • Memperbaiki NPE yang disebabkan oleh kegagalan IO
  • Memperbaiki kebocoran memori dalam GetSchemaType, Get, Delete, DeleteByNamespace, dan DeleteBySchemaType

Versi 1.0.0

Versi 1.0.0-alpha04

3 November 2021

androidx.appsearch:appsearch-*:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit ini.

Fitur Baru

  • Dependensi ListenableFuture Guava otomatis disertakan sebagai dependensi API

Perubahan API

  • Menambahkan SearchResult#getSubmatchRange() dan SearchResult#getSubmatch() untuk memberikan informasi selengkapnya tentang setiap kecocokan. (I2fef6)
  • Memperjelas dokumentasi tentang cara membuat sidik jari PackageIdentifier untuk berbagi data menggunakan packagename+certificate

Perbaikan Bug

  • Memperbaiki error saat pengguna mencoba mengambil halaman hasil setelah akhir penetapan hasil
  • Memperbaiki masalah terkait semua namespace yang dikueri jika hanya namespace tidak valid yang disediakan sebagai filter kueri
  • Memperbaiki masalah terkait semua namespace yang dihapus jika hanya namespace tidak valid yang disediakan sebagai filter hapus menurut kueri
  • Memperbaiki masalah ketika data dokumen berhenti diindeks setelah titik tertentu, untuk dokumen berukuran sangat besar
  • Memperbaiki masalah saat tokenisasi akan menghapus segmen dengan karakter numerik non-ASCII
  • Menambahkan pemeriksaan terhadap upaya inisialisasi yang gagal berturut-turut guna membantu menghilangkan potensi status buruk yang mencegah inisialisasi berhasil.

Versi 1.0.0-alpha03

21 Juli 2021

androidx.appsearch:appsearch-*:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit ini.

Fitur Baru

  • Rilis Backend Penyimpanan Platform untuk memungkinkan klien menggunakan AppSearch API dengan layanan android.app.appsearch.AppSearchManager baru yang diluncurkan di Android S. Untuk detail selengkapnya, buka Panduan Developer AppSearch.
  • Dukungan pemroses anotasi untuk AutoValue
  • Penghapusan batas ukuran maksimum untuk properti string tunggal
  • Format penyimpanan baru untuk mengurangi latensi inisialisasi
  • Migrasi data internal satu kali dari format penyimpanan lama ke format penyimpanan baru

Perbaikan Bug

  • Menerapkan batas dokumen maksimum dengan benar saat memasukkan dokumen baru
  • Memperbaiki error selama pembuatan AppSearchSession
  • Memperbaiki bug di SetSchema yang tidak mendeteksi beberapa kasus inkompatibilitas mundur dan inkompatibilitas indeks

Versi 1.0.0-alpha02

30 Juni 2021

androidx.appsearch:appsearch:1.0.0-alpha02, androidx.appsearch:appsearch-compiler:1.0.0-alpha02, dan androidx.appsearch:appsearch-local-storage:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit berikut ini.

Fitur Baru

  • Dukungan penuh untuk bahasa Cina/Jepang/Korea/Thailand
  • Mengurangi ukuran androidx.appsearch:appsearch-local-storage
  • Penghapusan batas ukuran maksimum properti berulang
  • Mengizinkan penggunaan ulang class builder
  • Peningkatan pada toString() objek tertentu untuk memudahkan proses debug
  • Peningkatan dokumentasi Javadoc

Perubahan API

  • Mengganti nama SearchResult#getMatches menjadi SearchResult#getMatchInfos
  • Mengganti nama @Document.Int64Property menjadi @Document.LongProperty

Perbaikan Bug

  • Peningkatan dan perbaikan pada komputasi cuplikan hasil
  • Perbaikan bug pada inisialisasi AppSearchSession

Versi 1.0.0-alpha01

5 Mei 2021

androidx.appsearch:appsearch:1.0.0-alpha01, androidx.appsearch:appsearch-compiler:1.0.0-alpha01, dan androidx.appsearch:appsearch-local-storage:1.0.0-alpha01 dirilis. Versi 1.0.0-alpha01 berisi commit ini.

Fitur Baru

AppSearch adalah library penelusuran untuk mengelola data terstruktur yang disimpan secara lokal, dengan API untuk mengindeks data dan mengambil data melalui penelusuran teks lengkap. Gunakan AppSearch untuk membuat kemampuan penelusuran dalam aplikasi khusus untuk pengguna Anda. Rilis awalnya adalah 1.0.0-alpha01.