AppSearch

AppSearch là một thư viện tìm kiếm trên thiết bị để quản lý dữ liệu có cấu trúc được lưu trữ cục bộ, kèm theo các API để lập chỉ mục dữ liệu và truy xuất dữ liệu bằng phương thức tìm kiếm toàn bộ văn bản. Bạn có thể sử dụng thư viện này để xây dựng chức năng tìm kiếm tuỳ chỉnh trong ứng dụng cho người dùng.
Bản cập nhật mới nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
Ngày 11 tháng 12 năm 2024 - - - 1.1.0-alpha07

Khai báo phần phụ thuộc

Để thêm một phần phụ thuộc trên AppSearch, bạn phải thêm kho lưu trữ Google Maven vào dự án. Hãy đọc bài viết Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun của mình:

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

Để biết thêm thông tin về các phần phụ thuộc, hãy xem nội dung Thêm phần phụ thuộc cho bản dựng.

Ý kiến phản hồi

Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.

Báo lỗi mới

Xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.

Phiên bản 1.1

Phiên bản 1.1.0-alpha07

Ngày 11 tháng 12 năm 2024

Phát hành androidx.appsearch:appsearch-*:1.1.0-alpha07. Phiên bản 1.1.0-alpha07 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm chú thích ExperimentalAppSearchApi vào các nền tảng API mới chưa ổn định. (Ib09f4)
  • Hỗ trợ lưu trữ và chia sẻ dữ liệu blob nhị phân một cách hiệu quả thông qua AppSearchSession#openBlobForWriteAsync và các phương thức liên quan
  • Hỗ trợ lọc kết quả truy vấn bằng cách tính điểm biểu thức thông qua hàm matchScoreExpression (Id525a)
  • Hỗ trợ việc truyền thao tác xoá từ tài liệu mẹ sang tài liệu con. (Ia032d)
  • Hỗ trợ API lượng tử hoá nhúng để tăng hiệu suất nhúng với mức giảm chất lượng nhỏ. (Id8a07)
  • Hỗ trợ việc hạn chế tìm kiếm ở một số tài liệu nhất định bằng API addFilterDocumentIds trong SearchSpec. (I7c6f1)

Thay đổi về API

  • Di chuyển thông tin về loại mẹ từ GenericDocument sang SearchResult. (I34a1d)
  • Hỗ trợ các loại thao tác mới trong API TakenAction, bao gồm DismissActionImpressionAction. (I0c6c7)
  • Thêm giản đồ tích hợp AppSearch mới WebPage. (I28127)

Phiên bản 1.1.0-alpha06

Ngày 16 tháng 10 năm 2024

Phát hành androidx.appsearch:appsearch-*:1.1.0-alpha06. Phiên bản 1.1.0-alpha06 bao gồm các thay đổi sau.

Thay đổi về API

  • Thêm nút đại diện cho hàm truy vấn PropertyDefined. (I1aeaf)
  • Thêm các nút để biểu thị tính năng tìm kiếm bằng số và hạn chế thuộc tính. (I963a9)
  • Thêm nút đại diện cho hàm truy vấn GetSearchStringParameter. (I4f99b)
  • Thêm nút đại diện cho hàm truy vấn HasProperty. (I9c1c5)
  • Thêm giao diện để triển khai các hàm trong AST. (I9d42e)
  • Thêm toán tử AND và OR. (Iaa442)
  • Thêm NegationNode để biểu thị phủ định logic của các truy vấn trong AST. (Ia855a)
  • Thêm giao diện Nút vào AppSearch để xác định các nút. (If42fb)
  • Thêm chú thích API thử nghiệm cho AppSearch. (I3e57c)

Sửa lỗi

  • Thêm TextNodes để giữ các điều khoản. (Iefd02)

Bản sửa lỗi bảo mật

  • Kể từ thay đổi này, androidx sẽ biên dịch dựa trên protobuf 4.28.2 để giải quyết CVE-2024-7254. Nâng cấp phần phụ thuộc trên androidx.appsearch:appsearch-external-protobuf lên phiên bản 1.1.0-alpha06 mới nhất để giải quyết rủi ro về lỗ hổng.

Phiên bản 1.1.0-alpha05

Ngày 4 tháng 9 năm 2024

Phát hành androidx.appsearch:appsearch-*:1.1.0-alpha05. Phiên bản 1.1.0-alpha05 bao gồm các thay đổi sau.

Thay đổi về API

  • Ngừng sử dụng setEmbeddingSearchEnabledgetEmbeddingSearchEnabled không cần thiết. Xoá setListFilterTokenizeFunctionEnabledgetListFilterTokenizeFunctionEnabled. Xoá hàm truy vấn "tokenize". Thay thế bằng hàm truy vấn getSearchStringParameter và hàm addSearchStringParameter. (I09f5a)
  • Đổi tên Alarm#getComputingDevice thành getOriginatingDevice. (I63121)

Phiên bản 1.1.0-alpha04

Ngày 7 tháng 8 năm 2024

Phát hành androidx.appsearch:appsearch-*:1.1.0-alpha04. Phiên bản 1.1.0-alpha04 bao gồm các thay đổi sau.

Tính năng mới

  • Hỗ trợ triển khai PlayServicesStorage mới, cho phép sử dụng AppSearch trên các thiết bị cũ mà không phải chịu chi phí đáng kể về kích thước tệp APK của LocalStorage. Phương thức triển khai bộ nhớ này hoạt động bằng cách lưu trữ dữ liệu ứng dụng trong ứng dụng Dịch vụ Play.
  • Hỗ trợ các API mới trên các thiết bị chạy Android 15.
  • Hỗ trợ tìm kiếm cơ sở dữ liệu bằng cách nhúng các vectơ, cho phép so khớp mờ. (I2b41b)
  • Hỗ trợ các loại mẹ và tính đa hình trong mô hình giản đồ AppSearch. (I06118)
  • Hỗ trợ API TakenAction cho phép ứng dụng báo cáo thời điểm người dùng nhấp vào hoặc bỏ qua kết quả để nâng cao chất lượng trong các lượt tìm kiếm tiếp theo. (I54091)
  • Hỗ trợ các lớp có trình tạo trong trình xử lý chú thích bằng cách giới thiệu chú thích @Document.BuilderProducer mới. (Iec30a)
  • Hỗ trợ kiểm soát chi tiết hơn về việc lập chỉ mục thuộc tính nào của tài liệu lồng nhau. (Iec30a)
  • Hỗ trợ lọc nội dung tìm kiếm theo một số thuộc tính tài liệu nhất định. (Ib2659)
  • Hỗ trợ chế độ cài đặt chế độ hiển thị chi tiết hơn bằng cách cho phép OR và AND của chế độ cài đặt chế độ hiển thị. (I0274b)
  • Hỗ trợ cấp quyền hiển thị dữ liệu cho tất cả ứng dụng có thể thấy sự tồn tại của ứng dụng sở hữu (quyền hiển thị công khai). (I992e4)
  • Hỗ trợ chỉ truy xuất những kết quả có dữ liệu được điền sẵn trong một thuộc tính nhất định. (I7d94f)
  • Hỗ trợ truy xuất thông tin liên hệ của doanh nghiệp trong hồ sơ cá nhân. (Idd587)

Thay đổi về API

  • Thêm các tham số chú thích indexableNestedPropertiesListinheritIndexableNestedPropertiesFromSuperclass vào chú thích Document.DocumentProperty của AppSearch để cho phép lập chỉ mục các đường dẫn tài sản lồng nhau cụ thể. (Iec30a)
  • Hỗ trợ hàm khởi tạo trình tạo để tạo các thực thể trình tạo trong trình xử lý chú thích AppSearch (I265c9)
  • Cập nhật trình xử lý chú giải AppSearch để hỗ trợ việc đặt loại mẹ cho tính đa hình (I06118)
  • Thêm phương thức GetSchemaRequest để xoá chế độ cài đặt chế độ hiển thị (I38379)
  • Hỗ trợ addParentType trong AppSearch cho tính đa hình (Ida14a)
  • Thêm API cho các biểu thức xếp hạng bổ sung (I5d9f4)
  • Thêm API SearchAction (I54091)
  • Thêm trường mô tả cho các loại AppSearch (I84762)
  • Nhúng API truy vấn tìm kiếm và xếp hạng vào AppSearch (I0f6c3)
  • Xoá getDeletionPropagation (I21192)

Phiên bản 1.1.0-alpha03

Ngày 24 tháng 5 năm 2023

Phát hành androidx.appsearch:appsearch-*:1.1.0-alpha03. Phiên bản 1.1.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

  • Hỗ trợ API truy vấn nâng cao, API tính điểm nâng cao và tìm kiếm bằng số. (I02d48)
  • Thêm API LocalStorage.createGlobalSearchSession để tìm kiếm trên tất cả cơ sở dữ liệu trong bộ nhớ cục bộ của một ứng dụng. (Id3c89)
  • Thêm API để kết hợp các tài liệu theo mã nhận dạng (Iaecfa)
  • Hỗ trợ trọng số thuộc tính để đánh dấu một số thuộc tính nhất định quan trọng hơn khi sử dụng RANKING_STRATEGY_RELEVANCE_SCORING. (I069b9)
  • Thêm Person và ContactPoint để truy vấn tập hợp văn bản Person trong AppSearch. (Ia58f9)
  • Thêm loại Tài liệu mới ImageObject được mô hình hoá theo http://schema.org/ImageObject. (I6a0c0)
  • Thêm một trình phân tích cú pháp VERBATIM cho phép thêm các thuộc tính mà không cần AppSearch diễn giải. (I47bc0)
  • Thêm RFC822_TOKENIZATION làm loại trình phân tích cú pháp, cho phép mã hoá địa chỉ email. (I8a390)
  • Bật tính năng Tìm kiếm toàn cục trong Chế độ xem gỡ lỗi. (I51fb2)

Thay đổi về API

  • Xoá các phương thức trả về ListenableFuture và không có hậu tố Async. (I0515f)
  • Thêm khả năng định cấu hình các phép chiếu theo lớp Document. (I94576)
  • Thêm các trường từ Thing vào Alarm, AlarmInstance, Timer, Stopwatch, StopwatchLap, ContactPointPerson (Id876c)

Sửa lỗi

  • Hỗ trợ đầy đủ các tính năng của Android 13 trong appsearch-platform-storage (Ia8e61)
  • Khắc phục các vấn đề về việc ghi đè tên giản đồ và trường riêng tư khi sử dụng tính kế thừa.

Phiên bản 1.1.0-alpha02

Ngày 24 tháng 8 năm 2022

Phát hành androidx.appsearch:appsearch-*:1.1.0-alpha02. Phiên bản 1.1.0-alpha02 bao gồm các thay đổi sau.

Tính năng mới

  • Tăng tốc quy trình của Optimize bằng cách sử dụng tính năng nén chỉ mục thay vì tạo lại chỉ mục từ đầu
  • Thay đổi thẻ ghi nhật ký gốc từ "icing" thành "AppSearchIcing", các thông báo INFO được ghi theo mặc định

Thay đổi về API

  • Thêm đối tượng PropertyPath mới để xử lý các đường dẫn cũng như thêm các phương thức addProjection mới để chấp nhận PropertyPath. (I45588)
  • Thêm builtin:Thing vào loại tích hợp AppSearch (I55427)
  • Chặn sớm các tên thuộc tính trống trong GenericDocument. Trước đây, các tên thuộc tính này bị chặn tại thời điểm lập chỉ mục; giờ đây, chúng sẽ bị chặn tại thời điểm GenericDocument.Builder.build() (I9e780)

Sửa lỗi

  • Xoá định dạng chuỗi không cần thiết để cải thiện hiệu suất tính điểm RELEVANCE
  • Phân trang hiệu quả hơn khi gặp tài liệu không đọc được hoặc đã bị xoá
  • Thực hiện thu gom rác cho những truy vấn bị bỏ qua
  • Khắc phục tính năng hỗ trợ lập chỉ mục được lồng ghép cho Tài liệu. Trước đây, indexNestedProperties bị bỏ qua. (Iae9a6)

Đóng góp bên ngoài

  • Shea Smith: Khắc phục tính năng hỗ trợ lập chỉ mục được lồng ghép cho Tài liệu. (Iae9a6)

Phiên bản 1.1.0-alpha01

Ngày 15 tháng 6 năm 2022

Phát hành androidx.appsearch:appsearch-*:1.1.0-alpha01. Phiên bản 1.1.0-alpha01 được phát triển trong một nhánh phát hành riêng trước và không có nhật ký cam kết.

Thay đổi về API

  • Tất cả các phương thức trả về ListenableFuture đều đã được đổi tên thành hậu tố Không đồng bộ. Chẳng hạn như getSchema đã được đổi tên thành getSchemaAsync. Các phiên bản trước đã ngừng hoạt động và sẽ bị xoá trong bản phát hành sau này.

Tính năng mới

  • Bản phát hành đầu tiên của loại tích hợp tìm kiếm ứng dụng. Dự án này chứa một vài loại tích hợp dựa trên schema.org thuận tiện cho khách hàng trong việc sử dụng thay vì xác định loại của riêng họ cho các đối tượng chung. Nhiều loại khác sẽ được thêm vào các bản phát hành trong tương lai.
  • Khả năng sử dụng ShortcutAdapter để chuyển đổi Tài liệu AppSearch thành ShortcutInfoCompat. Nhờ đó, khách hàng có thể chia sẻ tài liệu AppSearch với Google bằng cách sử dụng thư viện core-google-shortcuts
  • Có thể dùng tính năng kế thừa với các lớp @Document. Bạn không thể thay thế hoặc sửa đổi các trường, nhưng có thể thêm các trường mới bằng cách mở rộng một lớp chú thích bằng @Document.
  • Observer API mới cho phép khách hàng đăng ký nhận thông báo khi các loại mà họ có quyền truy cập vào đã thay đổi hoặc khi tài liệu của các loại đó được thêm, sửa đổi hoặc xoá. LƯU Ý QUAN TRỌNG: Cách triển khai hiện tại chỉ ra thông báo khi ứng dụng của bạn đang chạy. Hiện không có cách nào để kiểm tra những thay đổi đã xảy ra khi ứng dụng của bạn đang bị dừng. Do đó, bạn không nên dựa vào API này để hoàn tất.
  • API trình phân tích cú pháp thuộc tính cho phép bạn xử lý và kiểm tra đầy đủ các đường dẫn thuộc tính do MatchInfo#getPropertyPath trả về.
  • API getById chung và getSchema chung dùng để truy xuất tài liệu cũng như giản đồ từ các ứng dụng khác đã cấp cho bạn khả năng hiển thị.
  • Khả năng truy xuất thông tin hiển thị trong getSchema đối với dữ liệu mà bạn có quyền truy cập
  • Khả năng cấp quyền hiển thị cho các ứng dụng có một số quyền nhất định trên Android (bị hạn chế trong một nhóm nhỏ các quyền có trong danh sách cho phép)
  • Hỗ trợ phương thức getter kiểu isFoo() cho các trường boolean trong trình xử lý chú thích, ngoài kiểu hasFoo() được hỗ trợ trước đó
  • Hỗ trợ các tính năng mới được bảo vệ sau @RequiresFeature. Dùng AppSearchSession#getFeatures để xác định những phần phụ trợ hiện đang hỗ trợ.
  • Xóa giới hạn mã thông báo ~13k trên từng tài liệu riêng lẻ
  • Cho phép so khớp trên các ký tự không phải là ascii + không phải là chữ hay số, chẳng hạn như biểu tượng cảm xúc

Sửa lỗi

  • Khắc phục lỗi không thành công SetSchema khi ghi đè một loại không tương thích lồng.
  • Khắc phục lỗi để được hỗ trợ đầy đủ các lớp được chú thích @AutoValue đang được dùng làm lớp AppSearch @Document
  • Khắc phục một số sự cố liên quan đến việc lặp lại các danh sách của lớp Tài liệu và những vấn đề khác
  • Khắc phục lỗi dẫn đến sự cố tìm kiếm tiền tố trong một số trường hợp nhất định
  • Khắc phục lỗi nhỏ trong GetStorageInfo do trả về các giá trị không chính xác khi gặp lỗi IO
  • Khắc phục vấn đề BUSADDERR khi đọc một tài liệu
  • Khắc phục tình trạng hỏng logcat xảy ra do việc in vân tay chưa được định dạng
  • Khắc phục NPE do lỗi IO gây ra
  • Khắc phục sự cố rò rỉ bộ nhớ trong GetSchemaType, Get, Delete, DeleteByNamespaceDeleteBySchemaType

Phiên bản 1.0.0

Phiên bản 1.0.0-alpha04

Ngày 3 tháng 11 năm 2021

Phát hành androidx.appsearch:appsearch-*:1.0.0-alpha04. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.

Tính năng mới

  • Phần phụ thuộc Guava ListenableFuture được tự động đưa vào dưới dạng phần phụ thuộc API

Thay đổi về API

  • Hãy thêm SearchResult#getSubmatchRange() và SearchResult#getSubmatch() để cung cấp thêm thông tin về từng kết quả khớp. (I2fef6)
  • Làm rõ tài liệu về cách tạo vân tay PackageIdentifier để chia sẻ dữ liệu theo packagename+certificate

Sửa lỗi

  • Khắc phục sự cố khi người dùng tìm nạp các trang kết quả sau khi kết thúc bộ kết quả
  • Khắc phục vấn đề liên quan đến tất cả không gian tên được truy vấn nếu chỉ có vùng chứa tên không hợp lệ được cung cấp làm bộ lọc truy vấn
  • Khắc phục vấn đề với tất cả các vùng chứa tên bị xoá nếu chỉ có vùng chứa tên không hợp lệ được cung cấp dưới dạng remove-by-query filtersLo
  • Khắc phục vấn đề về việc dữ liệu tài liệu ngừng được lập chỉ mục sau một điểm nhất định đối với các tài liệu có kích thước rất lớn
  • Khắc phục vấn đề việc mã hoá sẽ làm loại bỏ phân khúc với các ký tự số không phải ASCII
  • Thêm tính năng kiểm tra các lần khởi chạy không thành công liên tiếp để giúp thoát khỏi trạng thái xấu có thể ngăn chặn việc khởi chạy thành công.

Phiên bản 1.0.0-alpha03

Ngày 21 tháng 7 năm 2021

Phát hành androidx.appsearch:appsearch-*:1.0.0-alpha03. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

  • Phát hành Phần phụ trợ bộ nhớ nền tảng để cho phép khách hàng sử dụng API AppSearch với dịch vụ android.app.appsearch.AppSearchManager mới phát hành trong Android S. Để biết thêm thông tin, vui lòng truy cập Hướng dẫn cho nhà phát triển AppSearch.
  • Hỗ trợ trình xử lý chú giải cho AutoValue
  • Xoá giới hạn kích thước tối đa của thuộc tính chuỗi đơn
  • Định dạng bộ nhớ mới để giảm độ trễ khởi chạy
  • Di chuyển dữ liệu nội bộ một lần từ định dạng bộ nhớ cũ sang định dạng bộ nhớ mới

Sửa lỗi

  • Thực thi chính xác giới hạn tài liệu tối đa khi chèn tài liệu mới
  • Khắc phục sự cố trong quá trình tạo AppSearchSession
  • Khắc phục các lỗi trong SetSchema không phát hiện được một số trường hợp không có khả năng tương thích ngược và không có khả năng tương thích với chỉ mục

Phiên bản 1.0.0-alpha02

Ngày 30 tháng 6 năm 2021

Phát hành androidx.appsearch:appsearch:1.0.0-alpha02, androidx.appsearch:appsearch-compiler:1.0.0-alpha02androidx.appsearch:appsearch-local-storage:1.0.0-alpha02. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.

Tính năng mới

  • Hỗ trợ đầy đủ tiếng Trung/Tiếng Nhật/Tiếng Hàn/Tiếng Thái
  • Giảm kích thước của androidx.appsearch:appsearch-local-storage
  • Xoá giới hạn kích thước tối đa của các thuộc tính lặp lại
  • Cho phép sử dụng lại các lớp trình tạo
  • Những điểm cải tiến trong toString() đối tượng nhất định để dễ dàng gỡ lỗi hơn
  • Những điểm cải tiến trong tài liệu Javadoc

Thay đổi về API

  • Đổi tên SearchResult#getMatches thành SearchResult#getMatchInfos
  • Đổi tên @Document.Int64Property thành @Document.LongProperty

Sửa lỗi

  • Những điểm cải tiến và sửa lỗi để tính toán đoạn trích kết quả
  • Sửa lỗi trong quá trình khởi chạy AppSearchSession

Phiên bản 1.0.0-alpha01

Ngày 5 tháng 5 năm 2021

Phát hành androidx.appsearch:appsearch:1.0.0-alpha01, androidx.appsearch:appsearch-compiler:1.0.0-alpha01androidx.appsearch:appsearch-local-storage:1.0.0-alpha01. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

AppSearch là một thư viện tìm kiếm trên thiết bị để quản lý dữ liệu có cấu trúc được lưu trữ cục bộ, kèm theo các API để lập chỉ mục dữ liệu và truy xuất dữ liệu bằng phương thức tìm kiếm toàn bộ văn bản. Bạn có thể sử dụng thư viện này để xây dựng chức năng tìm kiếm tuỳ chỉnh trong ứng dụng cho người dùng. Bản phát hành đầu tiên này là 1.0.0-alpha01.