AppSearch

AppSearch 裝置端搜尋程式庫可管理本機儲存的結構化資料,並且提供 API 供資料索引與擷取 (透過全文搜尋) 作業使用。您可以使用這項功能為使用者建構自訂應用程式內搜尋功能。
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
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。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

建立新問題

詳情請參閱 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)
  • 新增 NegationNode,用於在 AST 中表示查詢的邏輯否定。(Ia855a)。
  • 將節點介面新增至 AppSearch,以便定義節點。(If42fb)。
  • AppSearch 新增實驗性 API 註解。(I3e57c)

修正錯誤

  • 新增 TextNodes 以保留條件。(Iefd02)

安全性修正

  • 這項異動起,androidx 會針對 protobuf 4.28.2 進行編譯,以解決 CVE-2024-7254 問題。將 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 版包含這些修訂版本

新功能

  • 支援新的 PlayServicesStorage 實作方式,可在舊裝置上使用 AppSearch,而不會產生 LocalStorage 的大量 APK 大小成本。這個儲存空間實作方式是將應用程式資料儲存在 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-alpha031.1.0-alpha03 版包含此連結所列的修訂項目。

新功能

  • 支援進階查詢 API、進階評分 API 和數字搜尋。(I02d48)。
  • 新增 LocalStorage.createGlobalSearchSession API,可在單一應用程式的本機儲存空間中搜尋所有資料庫。Id3c89
  • 新增 API,可根據 ID 彙整文件 (Iaecfa)
  • 使用 RANKING_STRATEGY_RELEVANCE_SCORING 時,支援屬性權重以標記特定屬性更為重要。(I069b9)。
  • 新增 Person 和 ContactPoint,以便在 AppSearch 中查詢 Person 語料庫。(Ia58f9)
  • 新增了以 http://schema.org/ImageObject 為範本的新文件類型 ImageObject。(I6a0c0)
  • 新增 VERBATIM 分詞器,可在 AppSearch 不解讀的情況下新增屬性。(I47bc0)
  • 新增 RFC822_TOKENIZATION 做為分詞器類型,可將電子郵件地址進行符串化。(I8a390)
  • 在「偵錯」檢視畫面中啟用全域搜尋功能。(I51fb2)。

API 變更

  • 已移除傳回 ListenableFuture 且沒有 Async 後置字串的方法。(I0515f)。
  • 新增可透過 Document 類別設定投影功能。(I94576)。
  • 將欄位從 Thing 新增至 AlarmAlarmInstanceTimerStopwatchStopwatchLapContactPointPerson (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)。
  • 已將 builtin:Thing 新增至 AppSearch 內建類型 (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 後置字串。舉例來說,getSchema 已重新命名為 getSchemaAsync。舊版已淘汰,並將在日後推出的版本中移除。

新功能

  • 首次推出的 appsearch-buildin 類型。此專案包含一些以 schema.org 為基礎的內建類型,可讓用戶端更容易使用,而不是自行定義一般物件的類型。我們會在日後推出的版本中加入更多類型。
  • 可使用 ShortcutAdapter 轉換 AppSearch 文件至 ShortcutInfoCompat。因此,用戶端可使用 core-google-shortcuts 程式庫將 AppSearch 文件分享到 Google
  • 可沿用 @Document 類別的機制。欄位無法替換或修改,但可以使用 @Document 備註擴充新的類別以加入新的欄位。
  • 新推出的 Observer API 可讓用戶端在他們可存取的類型變更,或新增、修改或移除這些類型的文件時,接收通知。重要事項:目前的實作只會在應用程式執行時傳送通知。目前您無法檢查應用程式停止期間發生的變更。因此,建議您不要依賴此 API 取得完整性資訊。
  • Property parser API 可讓您完整處理及檢查 MatchInfo#getPropertyPath 傳回的屬性路徑。
  • 全域 getById 和全域 getSchema API,可從您已獲得瀏覽權限的其他應用程式擷取文件和結構定義。
  • 針對您具有存取權的資料,可擷取 getSchema 瀏覽權限資訊
  • 可授予含有特定 Android 權限的應用程式瀏覽權限 (限制為限定的許可清單權限)
  • 除了先前支援的樣式 hasFoo() 之外,註解處理工具中的布林值欄位也支援 isFoo() 樣式的 getter
  • 支援在 @RequiresFeature 保護的新功能。請使用 AppSearchSession#getFeatures 判定目前的後端支援的項目。
  • 移除個別文件的權杖上限 (約 13,000 個)
  • 允許比對非 ASCII 和非英數字元,例如:表情符號

修正錯誤

  • 修正覆寫與建立巢狀結構不相容的類型時,會導致 SetSchema 失敗的錯誤。
  • 進行修正以完整支援 @AutoValue 註解類別 (做為 AppSearch @Document 類別使用)
  • 修正有關文件類別重複清單和其他問題的一些當機情形
  • 修正在特定情況下會導致前置字串搜尋中斷的錯誤
  • 修正 GetStorageInfo 中會在發生 IO 錯誤時傳回不正確的值的細微錯誤
  • 修正讀取文件時發生的 BUSADDERR 問題
  • 修正顯示未格式化指紋造成的 Logcat 損毀問題
  • 修正因 IO 失敗而造成的 NPE
  • 修正 GetSchemaTypeGetDeleteDeleteByNamespaceDeleteBySchemaType 中的記憶體流失問題

1.0.0 版本

1.0.0-alpha04 版本

2021 年 11 月 3 日

發布 androidx.appsearch:appsearch-*:1.0.0-alpha041.0.0-alpha04 版本包含以下修訂項目。

新功能

  • Guava ListenableFuture 依附元件自動成為 API 依附元件

API 變更

  • 新增 SearchResult#getSubmatchRange() 和 SearchResult#getSubmatch() 以提供更多與每個相符項目相關的資訊。(I2fef6)
  • 詳細說明如何產生 PackageIdentifier 指紋,以依 packagename+certificate 共用資料

修正錯誤

  • 修正使用者在結果組合結束後嘗試擷取結果網頁時發生的當機問題
  • 修正如果只提供無效命名空間做為查詢篩選條件,就會查詢所有命名空間的問題
  • 修正如果只提供無效命名空間做為「依據查詢進行移除」的篩選條件,就會移除所有命名空間的問題
  • 修正文件過大時,在某個階段後文件資料停止編入索引的問題
  • 修正權杖化會捨棄含有非 ASCII 數字字元的區隔問題
  • 針對連續失敗的初始化嘗試來新增檢查功能,以協助排除無法成功初始化的潛在錯誤狀態。

1.0.0-alpha03 版本

2021 年 7 月 21 日

發布 androidx.appsearch:appsearch-*:1.0.0-alpha031.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-alpha02androidx.appsearch:appsearch-compiler:1.0.0-alpha02androidx.appsearch:appsearch-local-storage:1.0.0-alpha021.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-alpha01androidx.appsearch:appsearch-compiler:1.0.0-alpha01androidx.appsearch:appsearch-local-storage:1.0.0-alpha011.0.0-alpha01 版本包含這些修訂版本。

新功能

AppSearch 搜尋程式庫可管理本機儲存的結構化資料,並且提供 API 供資料索引與擷取 (透過全文搜尋) 作業使用。您可以使用這項功能為使用者建構自訂應用程式內搜尋功能。初始版本為 1.0.0-alpha01