AppSearch

AppSearch היא ספריית חיפוש במכשיר לניהול נתונים מובְנים שמאוחסנים באופן מקומי, עם ממשקי API ליצירת אינדקס של נתונים ולאחזור נתונים באמצעות חיפוש טקסט מלא. אפשר להשתמש בו כדי ליצור יכולות חיפוש מותאמות אישית באפליקציה בשביל המשתמשים.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסה אלפא
11 בדצמבר 2024 - - - 1.1.0-alpha07

הצהרת יחסי תלות

כדי להוסיף תלות ב-AppSearch, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאגר Maven של Google.

מוסיפים את יחסי התלות של הארטיפקטים הנדרשים בקובץ build.gradle של האפליקציה או המודול:

מגניב

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

מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ל-build.

משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.

דיווח על בעיה חדשה

מידע נוסף זמין במסמכי התיעוד של Issue Tracker.

גרסה 1.1

גרסה 1.1.0-alpha07

11 בדצמבר 2024

androidx.appsearch:appsearch-*:1.1.0-alpha07 משוחרר. גרסת 1.1.0-alpha07 כוללת את ההוספות האלה.

תכונות חדשות

  • מוסיפים את ההערה ExperimentalAppSearchApi לממשקי API חדשים שעדיין לא התייצבו. (Ib09f4)
  • תמיכה באחסון ובשיתוף יעילים של נתוני blob בינאריים באמצעות AppSearchSession#openBlobForWriteAsync ושיטות קשורות
  • תמיכה בסינון תוצאות של שאילתות באמצעות ביטוי למתן ניקוד באמצעות הפונקציה matchScoreExpression (Id525a)
  • תמיכה בהעברת מחיקה ממסמך הורה למסמכי הצאצאים. (Ia032d)
  • תמיכה ב-API לקביעת כמות הביטים להטמעה (quantization) כדי לשפר את ביצועי ההטמעה עם ירידה קלה באיכות. (Id8a07)
  • תמיכה בהגבלת חיפושים למסמכים מסוימים באמצעות ה-API של addFilterDocumentIds ב-SearchSpec. (I7c6f1)

שינויים ב-API

  • מעבירים את פרטי סוג ההורה מ-GenericDocument אל SearchResult. (I34a1d)
  • תמיכה בסוגי פעולות חדשים ב-API של TakenAction, כולל DismissAction ו-ImpressionAction. (I0c6c7)
  • נוספה סכימה מובנית חדשה של AppSearch‏ WebPage. (I28127)

גרסה 1.1.0-alpha06

16 באוקטובר 2024

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)
  • הוספת הערה על ממשק API ניסיוני עבור AppSearch. (I3e57c)

תיקוני באגים

  • מוסיפים TextNodes לתנאי ההחזקה. (Iefd02)

תיקון אבטחה

  • החל מהשינוי הזה, androidx מבצע קומפילציה מול protobuf 4.28.2 כדי לטפל בבעיה CVE-2024-7254. כדי לטפל בסיכון של נקודת החולשה, צריך לשדרג את התלות ב-androidx.appsearch:appsearch-external-protobuf לגרסה העדכנית ביותר, 1.1.0-alpha06.

גרסה 1.1.0-alpha05

4 בספטמבר 2024

androidx.appsearch:appsearch-*:1.1.0-alpha05 משוחרר. גרסת 1.1.0-alpha05 כוללת את ההוספות האלה.

שינויים ב-API

  • הוצאה משימוש של setEmbeddingSearchEnabled ו-getEmbeddingSearchEnabled מיותרים. המחיקה של setListFilterTokenizeFunctionEnabled ו-getListFilterTokenizeFunctionEnabled. פונקציית השאילתה 'tokenize' נמחקה. הוחלפה בפונקציית השאילתה getSearchStringParameter ובפונקציה addSearchStringParameter. (I09f5a)
  • משנים את השם של Alarm#getComputingDevice ל-getOriginatingDevice. (I63121)

גרסה 1.1.0-alpha04

7 באוגוסט 2024

androidx.appsearch:appsearch-*:1.1.0-alpha04 משוחרר. גרסת 1.1.0-alpha04 כוללת את ההוספות האלה.

תכונות חדשות

  • תמיכה בהטמעה החדשה של PlayServicesStorage, שמאפשרת להשתמש ב-AppSearch במכשירים ישנים יותר בלי לשלם את העלות המשמעותית של LocalStorage בגלל גודל ה-APK. הטמעת האחסון הזו פועלת על ידי שמירת נתוני האפליקציות באפליקציית Play Services.
  • תמיכה בממשקי API חדשים במכשירים עם Android מגרסה 15 ואילך.
  • תמיכה בחיפוש במסד הנתונים באמצעות הטמעת וקטורים, שמאפשרת התאמה מעורפלת. (I2b41b)
  • תמיכה בסוגי הורה ובפולימורפיזם בתוך מודל הסכימה AppSearch. (I06118)
  • תמיכה ב-API ‏TakenAction שמאפשר לאפליקציות לדווח על מקרים שבהם המשתמשים לחצו על תוצאות או עזבו אותן, כדי לשפר את האיכות במהלך חיפושים הבאים. (I54091)
  • הוספנו את ההערה החדשה @Document.BuilderProducer כדי לתמוך בכיתות עם בוני נתונים (builders) במעבד ההערות. (Iec30a)
  • תמיכה בשליטה ברמת פירוט גבוהה יותר על המאפיינים של מסמך בתצוגת עץ שיתווספו לאינדקס. (Iec30a)
  • תמיכה בסינון חיפושים לפי מאפייני מסמכים מסוימים. (Ib2659)
  • תמיכה בהגדרות גלישה מפורטות יותר על ידי הרשאה לשימוש ב-OR וב-AND של הגדרות גלישה. (I0274b)
  • תמיכה במתן גישה לנתונים לכל האפליקציות שיכולות לראות את האפליקציה הבעלים (חשיפה ציבורית). (I992e4)
  • תמיכה באחזור רק תוצאות שיש בהן נתונים מאוכלסים בנכס מסוים. (I7d94f)
  • תמיכה באחזור אנשי קשר ארגוניים בפרופיל האישי. (Idd587)

שינויים ב-API

  • מוסיפים את הפרמטרים indexableNestedPropertiesList ו-inheritIndexableNestedPropertiesFromSuperclass להערה Document.DocumentProperty של AppSearch כדי לאפשר הוספה לאינדקס של נתיבים ספציפיים של נכסים בתצוגת עץ. (Iec30a)
  • תמיכה ב-builder constructor ליצירת מכונות builder במעבד ההערות של AppSearch (I265c9)
  • עדכון מעבד האנוטציות של AppSearch כך שיתמוך בהגדרת סוגי הורה לפולימורפיזם (I06118)
  • נוספה שיטה GetSchemaRequest לניקוי הגדרות החשיפה (I38379)
  • תמיכה ב-addParentType ב-AppSearch לצורך פולימורפיזם (Ida14a)
  • הוספת ממשקי API לביטויים נוספים לדירוג (I5d9f4)
  • הוספת API של SearchAction‏ (I54091)
  • הוספת שדה תיאור לסוגי AppSearch (I84762)
  • הוספת ממשקי API להטמעת שאילתות חיפוש ורישום דירוגים ל-AppSearch‏ (I0f6c3)
  • הסרת getDeletionPropagation (I21192)

גרסה 1.1.0-alpha03

24 במאי 2023

androidx.appsearch:appsearch-*:1.1.0-alpha03 משוחרר. גרסה 1.1.0-alpha03 כוללת את ההוספות האלה.

תכונות חדשות

  • תמיכה בממשק API מתקדם לשאילתות, בממשק API מתקדם למתן ציונים ובחיפוש מספרי. (I02d48)
  • הוספת ממשק API של LocalStorage.createGlobalSearchSession לחיפוש בכל מסדי הנתונים באחסון המקומי של אפליקציה אחת. (Id3c89)
  • הוספנו ממשק API למיזוג מסמכים לפי מזהה (Iaecfa)
  • כשמשתמשים ב-RANKING_STRATEGY_RELEVANCE_SCORING, חשוב יותר לתמוך במשקלים של נכסים כדי לסמן נכסים מסוימים. (I069b9)
  • מוסיפים את Person ו-ContactPoint כדי לשלוח שאילתה לגוף נתונים של אנשים ב-AppSearch. (Ia58f9)
  • נוספ סוג מסמך חדש ImageObject לפי המודל של http://schema.org/ImageObject. (I6a0c0)
  • מוסיפים מפַתח תווים של VERBATIM שמאפשר להוסיף מאפיינים בלי פרשנות על ידי AppSearch. (I47bc0)
  • הוספנו את RFC822_TOKENIZATION כסוג של מחוללי תווים, שמאפשר ביצוע יצירת אסימונים של כתובות אימייל. (I8a390)
  • מפעילים את החיפוש הגלובלי בתצוגת ניפוי הבאגים. (I51fb2)

שינויים ב-API

  • הוסרו שיטות שמחזירות את הערך ListenableFuture ואין להן סיומת Async. (I0515f)
  • הוספת היכולת להגדיר תחזיות לפי סיווג Document. (I94576)
  • הוספת שדות מ-Thing עד Alarm, AlarmInstance, Timer, Stopwatch, StopwatchLap, ContactPoint ו-Person (Id876c)

תיקוני באגים

  • תמיכה מלאה בתכונות של Android 13 ב-appsearch-platform-storage‏ (Ia8e61)
  • פתרון בעיות שקשורות לשינוי ברירת המחדל של שמות של סכימות ושדות פרטיים כשמשתמשים בירושה.

גרסה 1.1.0-alpha02

24 באוגוסט 2022

androidx.appsearch:appsearch-*:1.1.0-alpha02 משוחרר. גרסה 1.1.0-alpha02 מכילה את ההוספות האלה.

תכונות חדשות

  • השלמנו את תהליך הבדיקה של Optimize מהר יותר באמצעות דחיסה של אינדקס במקום בנייה מחדש של אינדקס מאפס
  • שינוי התג של הרישום ביומן המקורי מ-'icing' ל-'AppSearchIcing', רישום הודעות INFO ביומן כברירת מחדל

שינויים ב-API

  • הוספה של אובייקט PropertyPath חדש לעבודה עם נתיבים ושיטות addProjection חדשות לקבלת PropertyPath. (I45588)
  • הוספת builtin:Thing לסוגי AppSearch מובנים (I55427)
  • מניעת שמות ריקים של נכסים ב-GenericDocument מוקדם יותר – בעבר הם נמנעו בזמן ההוספה לאינדקס, עכשיו הם נמנעים בזמן GenericDocument.Builder.build() (I9e780)

תיקוני באגים

  • הסרת עיצוב מיותר של מחרוזות כדי לשפר את הביצועים של ניקוד הרלוונטיות
  • חלוקה יעילה יותר לדפים כשנתקלים במסמכים שלא ניתן לקרוא או במסמכים שנמחקו
  • הטמענו איסוף אשפה לשאילתות שננטשו
  • תיקון התמיכה בהוספת מסמכים לאינדקס בתצוגת עץ ב-Docs. בעבר, המערכת התעלמה מ-indexNestedProperties. (Iae9a6)

תרומה חיצונית

  • שי בוזגלו: תיקון התמיכה בהוספת מסמכים לאינדקס בתצוגת עץ ב-Docs. (Iae9a6)

גרסה 1.1.0-alpha01

15 ביוני 2022

androidx.appsearch:appsearch-*:1.1.0-alpha01 משוחרר. הגרסה 1.1.0-alpha01 פותחה בהסתעפות פרטית לפני השקה, ואין לה התחייבויות ציבוריות.

שינויים ב-API

  • השם של כל השיטות שמחזירות את הערך ListenableFuture השתנה והוספה להם הסיומת Async. לדוגמה, השם של getSchema השתנה ל-getSchemaAsync. הגרסאות הקודמות הוצאו משימוש ותוסרנה בגרסה עתידית.

תכונות חדשות

  • הגרסה הראשונה של appsearch-builtin-types. הפרויקט הזה מכיל כמה סוגים מובְנים שמבוססים על schema.org, שיכולים להיות שימושיים ללקוחות במקום להגדיר סוגים משלהם לאובייקטים נפוצים. סוגי מודעות נוספים יתווספו בגרסאות עתידיות.
  • אפשר להשתמש ב-ShortcutAdapter כדי להמיר מסמך AppSearch ל-ShortcutInfoCompat. כך ללקוחות יש דרך לשתף מסמכים של AppSearch עם Google באמצעות ספריית core-google-shortcuts
  • אפשרות להשתמש בירושה עם כיתות @Document. אי אפשר להחליף או לשנות שדות, אבל אפשר להוסיף שדות חדשים על ידי הרחבת כיתה עם הערה @Document.
  • Observer API חדש שמאפשר ללקוחות להירשם לקבלת התראות כשיש שינויים בסוגי הפריטים שיש להם גישה אליהם, או כשמסמכים מהסוגים האלה מתווספים, משתנים או מוסרים. חשוב: ההטמעה הנוכחית שולחת התראות רק כשהאפליקציה פועלת. בשלב זה אין דרך לבדוק שינויים שהתרחשו בזמן שהאפליקציה הופסקה. לכן, לא מומלץ להסתמך על ה-API הזה לצורך השלמות.
  • ממשק API לניתוח נכסים שמאפשר לטפל ולבדוק באופן מלא את נתיבי הנכסים שמוחזרים על ידי MatchInfo#getPropertyPath.
  • ממשקי API גלובליים של getById ו-getSchema לאחזור מסמכים וסכימות מאפליקציות אחרות שהעניקו לכם גישה.
  • יכולת לאחזר מידע על הרשאות הגישה ב-getSchema לגבי נתונים שיש לכם גישה אליהם
  • היכולת להעניק גישה לאפליקציות שיש להן הרשאה מסוימת ב-Android (מוגבלת לקבוצה צרה של הרשאות ברשימת ההיתרים)
  • תמיכה ב-getters בסגנון isFoo() לשדות בוליאניים במעבד ההערות, בנוסף לסגנון הקודם hasFoo() שנתמך
  • תמיכה בתכונות חדשות שמוגנות באמצעות @RequiresFeature. אפשר להשתמש ב-AppSearchSession#getFeatures כדי לקבוע אילו תכונות נתמכות בקצה העורפי הנוכחי.
  • הסרת המגבלה של כ-13,000 אסימונים במסמכים ספציפיים
  • לאפשר התאמה של תווים שאינם מסוג ASCII או תווים שאינם אלפאנומריים, כמו אמוג'ים

תיקוני באגים

  • תיקון באג שגרם ל-SetSchema להיכשל כשמגדירים מחדש סוג לא תואם שמוטמע.
  • תיקונים לתמיכה מלאה בכיתות עם הערות @AutoValue שמשמשות ככיתות @Document של AppSearch
  • תיקונים לחלק מהקריסות שקשורות לרשימות חוזרות של Document classes ובעיות אחרות
  • תיקון באג שגרם לקריסה של חיפוש לפי קידומת בתנאים מסוימים
  • תיקון באג קטן ב-GetStorageInfo שגרם להחזרת ערכים שגויים במקרה של כשלים ב-IO
  • פתרון בעיות ב-BUSADDERR בזמן קריאת מסמך
  • תיקון פגיעה ב-logcat שנגרמה על ידי הדפסה של טביעת אצבע לא מפורמטת
  • תיקון שגיאות NPE שנגרמות כתוצאה מכשל ב-IO
  • תיקון דליפת זיכרון ב-GetSchemaType, ב-Get, ב-Delete, ב-DeleteByNamespace וב-DeleteBySchemaType

גרסה 1.0.0

גרסה 1.0.0-alpha04

3 בנובמבר 2021

androidx.appsearch:appsearch-*:1.0.0-alpha04 משוחרר. גרסה 1.0.0-alpha04 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

תכונות חדשות

  • תלות ב-Guava ListenableFuture שמובאת באופן אוטומטי כתלות ב-API

שינויים ב-API

  • מוסיפים את SearchResult#getSubmatchRange() ואת SearchResult#getSubmatch() כדי לספק מידע נוסף על כל התאמה. (I2fef6)
  • הבהרה לגבי התיעוד בנושא יצירת טביעות אצבע של PackageIdentifier לשיתוף נתונים לפי packagename+certificate

תיקוני באגים

  • תיקון קריסה אם המשתמש מנסה לאחזר דפי תוצאות אחרי סוף קבוצת התוצאות
  • תיקון בעיה שבה מתבצעת שאילתה לכל מרחבי השמות אם סופקו רק מרחבי שמות לא חוקיים כמסנני שאילתות
  • תיקון בעיה שבה כל מרחבי השמות הוסרו אם רק מרחבי שמות לא חוקיים סופקו כמסננים להסרה לפי שאילתה
  • תוקנה בעיה שבה נתוני מסמכים גדולים מאוד הפסיקו להיכלל במדד אחרי נקודה מסוימת
  • תוקנה בעיה שבה תהליך יצירת האסימונים גרם להשמטת קטעים עם תווים מספריים שאינם ASCII
  • הוספת בדיקה לניסיונות אתחול שנכשלו ברצף כדי לעזור לצאת ממצב רע פוטנציאלי שמונעת אתחול מוצלח.

גרסה 1.0.0-alpha03

21 ביולי 2021

androidx.appsearch:appsearch-*:1.0.0-alpha03 משוחרר. גרסה 1.0.0-alpha03 כוללת את ההצהרות האלה.

תכונות חדשות

  • השקת הקצה העורפי של אחסון הפלטפורמה כדי לאפשר ללקוחות להשתמש ב-AppSearch API עם השירות החדש android.app.appsearch.AppSearchManager שיושקו ב-Android S. פרטים נוספים זמינים במדריך למפתחים של AppSearch.
  • תמיכה במעבד אנוטציות (Annotation processor) עבור AutoValue
  • הסרת המגבלה על הגודל המקסימלי של מאפיין מחרוזת יחידה
  • פורמט אחסון חדש כדי לקצר את זמן האחזור של האינטראקציה הראשונית
  • העברת נתונים פנימית חד-פעמית מפורמט אחסון ישן לפורמט אחסון חדש

תיקוני באגים

  • אכיפה נכונה של מגבלת המסמכים המקסימלית כשמוסיפים מסמכים חדשים
  • תוקנה קריסה במהלך היצירה של AppSearchSession
  • תוקנו באגים ב-SetSchema שלא זיהו מקרים מסוימים של אי-תאימות לאחור ואי-תאימות של אינדקס

גרסה 1.0.0-alpha02

30 ביוני 2021

התכונות androidx.appsearch:appsearch:1.0.0-alpha02, androidx.appsearch:appsearch-compiler:1.0.0-alpha02 וגם androidx.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

5 במאי 2021

התכונות androidx.appsearch:appsearch:1.0.0-alpha01, androidx.appsearch:appsearch-compiler:1.0.0-alpha01 וגם androidx.appsearch:appsearch-local-storage:1.0.0-alpha01 משוחררות. גרסה 1.0.0-alpha01 מכילה את ההצהרות האלה.

תכונות חדשות

AppSearch היא ספריית חיפוש לניהול נתונים מובְנים שמאוחסנים באופן מקומי, עם ממשקי API להוספה של נתונים לאינדקס ולאחזור נתונים באמצעות חיפוש טקסט מלא. אפשר להשתמש בו כדי ליצור למשתמשים יכולות חיפוש מותאמות אישית באפליקציה. הגרסה הראשונית היא 1.0.0-alpha01.