AppSearch

AppSearch は、全文検索を使用してデータをインデックスに登録する API とデータを取得する 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 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

バージョン 1.1

バージョン 1.1.0-alpha07

2024 年 12 月 11 日

androidx.appsearch:appsearch-*:1.1.0-alpha07 がリリースされました。バージョン 1.1.0-alpha07 に含まれる commit はこちらをご覧ください。

新機能

  • まだ安定していない新しい API サーフェスに ExperimentalAppSearchApi アノテーションを追加します。(Ib09f4
  • AppSearchSession#openBlobForWriteAsync と関連メソッドを介したバイナリ blob データの効率的な保存と共有のサポート
  • matchScoreExpression 関数を介してスコアリング式でクエリ結果をフィルタリングするサポート(Id525a
  • 親ドキュメントから子ドキュメントへの削除の伝播をサポート。(Ia032d
  • 埋め込み量子化 API のサポートにより、品質のわずかな低下で埋め込みのパフォーマンスを向上させることができます。(Id8a07
  • SearchSpecaddFilterDocumentIds 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 に含まれる commit はこちらをご覧ください。

API の変更

  • PropertyDefined クエリ関数を表すノードを追加しました。(I1aeaf
  • 数値検索とプロパティ制限を表すノードを追加します。(I963a9
  • GetSearchStringParameter クエリ関数を表すノードを追加。(I4f99b
  • HasProperty クエリ関数を表すノードを追加します。(I9c1c5
  • AST で関数を実装するためのインターフェースを追加しました。(I9d42e
  • AND 演算子と OR 演算子を追加します。(Iaa442
  • AST でクエリの論理否定を表す NegationNode を追加しました。(Ia855a
  • ノードを定義するために、Node インターフェースを 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 には、これらの commit が含まれています。

API の変更

  • 不要な setEmbeddingSearchEnabledgetEmbeddingSearchEnabled のサポートを終了しました。setListFilterTokenizeFunctionEnabledgetListFilterTokenizeFunctionEnabled を削除します。「tokenize」クエリ関数を削除しました。getSearchStringParameter クエリ関数と addSearchStringParameter 関数に置き換えられました。(I09f5a
  • Alarm#getComputingDevicegetOriginatingDevice に変更しました。(I63121

バージョン 1.1.0-alpha04

2024 年 8 月 7 日

androidx.appsearch:appsearch-*:1.1.0-alpha04 がリリースされました。バージョン 1.1.0-alpha04 に含まれる commit はこちらをご覧ください。

新機能

  • 新しい 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 の変更

  • 特定のネストされたプロパティパスのインデックス登録を可能にするため、AppSearch の Document.DocumentProperty アノテーションに indexableNestedPropertiesList アノテーション パラメータと inheritIndexableNestedPropertiesFromSuperclass アノテーション パラメータを追加しました。(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 に含まれる commit については、こちらをご覧ください

新機能

  • 高度なクエリ API、高度なスコアリング API、数値検索のサポート。(I02d48
  • LocalStorage.createGlobalSearchSession API を追加して、単一アプリのローカル ストレージ内のすべてのデータベースを検索できるようにしました。(Id3c89
  • ID でドキュメントを結合する API を追加しました(Iaecfa
  • RANKING_STRATEGY_RELEVANCE_SCORING を使用する場合は、特定のプロパティを重要とマークするサポート プロパティの重み付けが重要になります。(I069b9
  • AppSearch に、Person コーパスをクエリするための Person と ContactPoint を追加。(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 に含まれる commit については、こちらをご覧ください

新機能

  • インデックスを最初から作り直すのではなく、インデックスの圧縮を使用して最適化プロセスを高速化しました
  • ネイティブ ロギングタグを「icing」から「AppSearchIcing」に変更し、INFO メッセージをデフォルトで記録するようになりました

API の変更

  • パスを操作するための新しい PropertyPath オブジェクトと、PropertyPath を受け入れるための新しい addProjection メソッドを追加しました。(I45588
  • AppSearch 組み込みタイプに builtin:Thing を追加しました(I55427
  • GenericDocument 内の空のプロパティ名の阻止を早めました。以前はインデックス登録時に阻止していましたが、GenericDocument.Builder.build() 時に防止するようになりました(I9e780

バグの修正

  • 不要な文字列形式を削除して、関連性スコアのパフォーマンスを改善しました
  • 読み取れないドキュメントや削除されたドキュメントに対処する際のページ分けの効率を改善しました
  • 放棄されたクエリに対するガベージ コレクションを実装しました
  • ドキュメントのインデックス登録のネストに関するサポートを修正しました。以前は indexNestedProperties が無視されていました。(Iae9a6

外部からの協力

  • Shea Smith: ドキュメントのインデックス登録のネストに関するサポートを修正しました。(Iae9a6

バージョン 1.1.0-alpha01

2022 年 6 月 15 日

androidx.appsearch:appsearch-*:1.1.0-alpha01 がリリースされました。バージョン 1.1.0-alpha01 は非公開のプレリリース ブランチで開発されており、公開版の commit はありません。

API の変更

  • ListenableFuture を返すすべてのメソッドの名前が変更され、Async という接尾辞が付くようになりました。たとえば、getSchemagetSchemaAsync に変更されました。以前のバージョンのサポートは終了しました。今後のリリースで削除される予定です。

新機能

  • appsearch-builtin-type の最初のリリースです。このプロジェクトには 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() スタイルのゲッターをサポートするようになりました。
  • @RequiresFeature で保護されている新しい機能をサポートするようになりました。AppSearchSession#getFeatures を使用して、現在のバックエンドのサポート対象を確認します。
  • ドキュメントごとの 13,000 件のトークン上限を廃止しました。
  • 絵文字など、ASCII 以外 + 英数字以外での一致を許可しました。

バグの修正

  • ネストされた互換性のないタイプをオーバーライドすると SetSchema が失敗するバグを修正しました。
  • AppSearch の @Document クラスとして使用される @AutoValue アノテーション付きクラスを完全にサポートするよう修正しました。
  • ドキュメント クラスの繰り返しリストに関連するクラッシュやその他の問題を修正しました。
  • 特定の状況で接頭辞の検索がクラッシュするバグを修正しました。
  • IO 障害が発生した場合に間違った値を返す GetStorageInfo の軽微なバグを修正しました。
  • ドキュメントを読み取る際の BUSADDERR に関する問題を修正しました。
  • フォーマットされていないフィンガープリントの印刷が原因で Logcat が壊れる問題を修正しました。
  • IO 障害が原因の NPE を修正しました。
  • GetSchemaTypeGetDeleteDeleteByNamespaceDeleteBySchemaType でのメモリリークを修正しました。

バージョン 1.0.0

バージョン 1.0.0-alpha04

2021 年 11 月 3 日

androidx.appsearch:appsearch-*:1.0.0-alpha04 がリリースされました。バージョン 1.0.0-alpha04 に含まれる commit については、こちらをご覧ください

新機能

  • Guava ListenableFuture 依存関係が API 依存関係として自動的に導入されました

API の変更

  • 各一致に関する詳細情報を提供するため、SearchResult#getSubmatchRange() と SearchResult#getSubmatch() を追加しました。(I2fef6
  • パッケージ名と証明書でデータを共有するために PackageIdentifier のフィンガープリントを生成する方法について、ドキュメントを明確化しました

バグの修正

  • 結果セットの終了後にユーザーが結果ページを取得しようとした場合にクラッシュする問題を修正しました
  • 無効な名前空間のみがクエリフィルタとして提供された場合に、すべての名前空間に対してクエリが実行される問題を修正しました
  • 無効な名前空間のみが削除のクエリフィルタとして提供された場合に、すべての名前空間が削除される問題を修正しました
  • 非常に大きなドキュメントで、特定の時点以降、ドキュメント データのインデックス登録が停止する問題を修正しました
  • トークン化により ASCII 以外の数字を含むセグメントがドロップされる問題を修正しました
  • 初期化が連続して失敗する場合の確認を追加し、初期化を妨げる不適切な状態から抜け出せるようにしました

バージョン 1.0.0-alpha03

2021 年 7 月 21 日

androidx.appsearch:appsearch-*:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください

新機能

  • プラットフォーム ストレージ バックエンドがリリースされ、Android S でリリースされる新しい android.app.appsearch.AppSearchManager サービスで AppSearch API を使用できるようになりました。詳しくは、AppSearch デベロッパー ガイドをご覧ください。
  • AutoValue に対するアノテーション プロセッサのサポート
  • 1 つの文字列プロパティのサイズの上限の削除
  • 初期化レイテンシを短縮するための新しいストレージ形式の追加
  • 古いストレージ形式から新しいストレージ形式への 1 回限りの内部データ移行

バグの修正

  • 新しいドキュメントを挿入するときに、ドキュメント数の上限を正しく適用するようになりました
  • 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-alpha02 がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください

新機能

  • 中国語、日本語、韓国語、タイ語の完全サポート
  • 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-alpha01 がリリースされました。バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください。

新機能

AppSearch は、全文検索を介してデータをインデックスに登録する API とデータを取得する API を備えた、ローカルに保存されている構造化データを管理するための検索ライブラリです。ユーザー向けにカスタムのアプリ内検索機能を構築するのに使用します。この初回リリースは 1.0.0-alpha01 です。