AppSearch

AppSearch to biblioteka wyszukiwania na urządzeniu służąca do zarządzania lokalnie przechowywanymi uporządkowanymi danymi. Zawiera interfejsy API do indeksowania danych i ich pobierania za pomocą wyszukiwania pełnego tekstu. Użyj go do tworzenia niestandardowych funkcji wyszukiwania w aplikacji dla użytkowników.
Ostatnia aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja Beta Wersja alfa
15 stycznia 2025 r. - - 1.1.0-beta01 -

Deklarowanie zależności

Aby dodać zależność od AppSearch, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven firmy Google.

Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle aplikacji lub modułu:

Odlotowe

dependencies {
    def appsearch_version = "1.1.0-beta01"

    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"

    // PlayServicesStorage is compatible with all devices that support Google Play Services on
    // all API levels. It offers the same features as PlatformStorage and is the recommended
    // solution for lower API levels on which PlatformStorage is not supported.
    implementation "androidx.appsearch:appsearch-play-services-storage:$appsearch_version"
}

Kotlin

dependencies {
    val appsearch_version = "1.1.0-beta01"

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

    // PlayServicesStorage is compatible with all devices that support Google Play Services on
    // all API levels. It offers the same features as PlatformStorage and is the recommended
    // solution for lower API levels on which PlatformStorage is not supported.
    implementation("androidx.appsearch:appsearch-play-services-storage:$appsearch_version")

}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz zagłosować na istniejący problem, klikając przycisk z gwiazdką.

Tworzenie nowego zgłoszenia

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.1

Wersja 1.1.0-beta01

15 stycznia 2025 r.

Element androidx.appsearch:appsearch-*:1.1.0-beta01 został zwolniony. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Moduł AppSearch przechodzi do wersji beta.

Zmiany w interfejsie API

  • Wyłącz eksperymentalny interfejs API do propagowania usuwania z powodu problemów ze stabilnością.AppSearch (Iea386)
  • Utwórz interfejs API GlobalSearchApplicationInfo, który jest eksperymentalnym i opcjonalnym sposobem na to, aby producenci i konsumenci mogli wskazać zainteresowanie określonymi typami. (I116fd)
  • Drobne zmiany w eksperymentalnych interfejsach API typu AST (query builder) (Ibd852)

Poprawki błędów

  • Biblioteka ta korzysta teraz z adnotacji JSpecify dotyczących nullowości, które są używane w zależności od typu. Aby wymusić prawidłowe użycie, deweloperzy Kotlina powinni użyć tego argumentu kompilatora: -Xjspecify-annotations=strict (jest to domyślna wartość od wersji 2.1.0 kompilatora Kotlina). (Ic2976, b/326456246)
  • Dodanie wymaganego uprawnienia do searchPersonCorpus (I4431d)

Wersja 1.1.0-alpha07

11 grudnia 2024 r.

Element androidx.appsearch:appsearch-*:1.1.0-alpha07 został zwolniony. Wersja 1.1.0-alpha07 zawiera te komity.

Nowe funkcje

  • Dodaj adnotację ExperimentalAppSearchApi do nowych interfejsów API, które nie są jeszcze stabilne. (Ib09f4)
  • Obsługa wydajnego przechowywania i udostępniania binarnych danych blob za pomocą AppSearchSession#openBlobForWriteAsync i powiązanych metod
  • Obsługa filtrowania wyników zapytania według wyrażenia punktacji za pomocą funkcji matchScoreExpression (Id525a)
  • Obsługa propagowania usunięcia z dokumentu nadrzędnego do dokumentów podrzędnych. (Ia032d)
  • Obsługa interfejsu API do kodowania za pomocą kwantyzacji, który zwiększa wydajność kodowania przy niewielkim spadku jakości. (Id8a07)
  • Obsługa ograniczania wyszukiwania do określonych dokumentów za pomocą interfejsu API addFilterDocumentIds w SearchSpec. (I7c6f1)

Zmiany w interfejsie API

  • Przenieś informacje o rodzaju rodzica z GenericDocument do SearchResult. (I34a1d)
  • Obsługa nowych typów działań w interfejsie API TakenAction, w tym DismissActionImpressionAction. (I0c6c7)
  • Dodano nowy schemat AppSearch WebPage. (I28127)

Wersja 1.1.0-alpha06

16 października 2024 r.

Element androidx.appsearch:appsearch-*:1.1.0-alpha06 został zwolniony. Wersja 1.1.0-alpha06 zawiera te komity.

Zmiany w interfejsie API

  • Dodano węzeł reprezentujący funkcję zapytania PropertyDefined. (I1aeaf)
  • Dodaj węzły reprezentujące wyszukiwanie liczbowe i ograniczenie właściwości. (I963a9)
  • Dodaj węzeł reprezentujący funkcję zapytania GetSearchStringParameter. (I4f99b)
  • Dodaj węzeł reprezentujący funkcję zapytania HasProperty. (I9c1c5)
  • Dodano interfejs do implementacji funkcji w AST. (I9d42e)
  • Dodaj operatory AND i OR. (Iaa442)
  • Dodaj NegationNode, aby reprezentować logiczne zaprzeczenie zapytań w AST. (Ia855a)
  • Dodaj interfejs węzła do pliku AppSearch, aby definiować węzły. (If42fb)
  • Dodano adnotację Experimental API dla AppSearch. (I3e57c)

Poprawki błędów

  • Dodaj TextNodes, aby określić warunki blokady. (Iefd02)

Naprawa zabezpieczeń

  • Od momentu wprowadzenia tej zmiany androidx kompiluje się z użyciem protobuf 4.28.2, aby rozwiązać problem CVE-2024-7254. Aby rozwiązać problem z luką w zabezpieczeniach, zaktualizuj zależność od androidx.appsearch:appsearch-external-protobuf do najnowszej wersji 1.1.0-alpha06.

Wersja 1.1.0-alpha05

4 września 2024 r.

Element androidx.appsearch:appsearch-*:1.1.0-alpha05 został zwolniony. Wersja 1.1.0-alpha05 zawiera te komity.

Zmiany w interfejsie API

  • Usunięcie zbędnych elementów setEmbeddingSearchEnabledgetEmbeddingSearchEnabled. Usuwam setListFilterTokenizeFunctionEnabledgetListFilterTokenizeFunctionEnabled. Usunięto funkcję zapytania „tokenize”. Zastąpiliśmy je funkcją zapytania getSearchStringParameter i funkcją addSearchStringParameter. (I09f5a)
  • Zmień nazwę Alarm#getComputingDevice na getOriginatingDevice. (I63121)

Wersja 1.1.0-alpha04

7 sierpnia 2024 r.

Element androidx.appsearch:appsearch-*:1.1.0-alpha04 został zwolniony. Wersja 1.1.0-alpha04 zawiera te komity.

Nowe funkcje

  • Obsługa nowej implementacji PlayServicesStorage, która umożliwia korzystanie z AppSearch na starszych urządzeniach bez ponoszenia znacznych kosztów związanych z rozmiarem pliku APK LocalStorage. W ramach tej implementacji dane aplikacji są przechowywane w aplikacji Usługi Google Play.
  • Obsługa nowych interfejsów API na urządzeniach z Androidem 15.
  • Obsługa wyszukiwania w bazie danych według wektorów dystrybucyjnych, co umożliwia dopasowanie przybliżone. (I2b41b)
  • Obsługa typów nadrzędnych i polimorfizmu w ramach modelu schematu AppSearch. (I06118)
  • Obsługa interfejsu API TakenAction, który umożliwia aplikacjom zgłaszanie, kiedy wyniki zostały kliknięte lub porzucone, aby zwiększyć jakość podczas kolejnych wyszukiwań. (I54091)
  • Obsługa klas z twórcami w procesorze adnotacji dzięki wprowadzeniu nowego adnotacji @Document.BuilderProducer. (Iec30a)
  • Dodanie możliwości bardziej szczegółowego określenia, które właściwości dokumentu zagnieżdżonego mają być indeksowane. (Iec30a)
  • Obsługa filtrowania wyszukiwania pod kątem określonych właściwości dokumentu. (Ib2659)
  • Obsługa bardziej szczegółowych ustawień widoczności dzięki zastosowaniu operatorów LUB i ALBO. (I0274b)
  • Obsługa przyznawania widoczności danych wszystkim aplikacjom, które mogą zobaczyć istnienie aplikacji właściciela (widoczność publiczna). (I992e4)
  • Obsługa pobierania tylko wyników, które mają dane wypełnione w określonej usłudze. (I7d94f)
  • Obsługa pobierania kontaktów firmowych w profilu osobistym. (Idd587)

Zmiany w interfejsie API

  • Dodaj parametry adnotacji indexableNestedPropertiesListinheritIndexableNestedPropertiesFromSuperclass do adnotacji Document.DocumentProperty w AppSearch, aby umożliwić indeksowanie określonych zagnieżdżonych ścieżek właściwości. (Iec30a)
  • Obsługa konstruktora buildera do tworzenia instancji buildera w procesorze adnotacji AppSearch (I265c9)
  • Zaktualizowano procesor adnotacji AppSearch, aby obsługiwał ustawianie typów nadrzędnych w przypadku polimorfizmu (I06118)
  • Dodanie metody GetSchemaRequest do wyczyszczania ustawień widoczności (I38379)
  • Obsługa addParentType w AppSearch na potrzeby polimorfizmu (Ida14a)
  • Dodawanie interfejsów API do dodatkowych wyrażeń rankingu (I5d9f4)
  • Dodaj interfejs API SearchAction (I54091)
  • Dodaje pole opisu dla typów AppSearch (I84762)
  • Wdrożenie interfejsów API zapytań i rankingów do AppSearch (I0f6c3)
  • Usunięcie getDeletionPropagation (I21192)

Wersja 1.1.0-alpha03

24 maja 2023 r.

Element androidx.appsearch:appsearch-*:1.1.0-alpha03 został zwolniony. Wersja 1.1.0-alpha03 zawiera te commity.

Nowe funkcje

  • Obsługa interfejsu API zaawansowanych zapytań, interfejsu API zaawansowanych wyników i wyszukiwania numerycznego. (I02d48)
  • Dodaje interfejs API LocalStorage.createGlobalSearchSession do wyszukiwania we wszystkich bazach danych w pamięci lokalnej pojedynczej aplikacji (Id3c89).
  • Dodano interfejs API do złączania dokumentów według identyfikatora (Iaecfa).
  • Obsługuje wagi właściwości, aby oznaczyć, że niektóre z nich są ważniejsze podczas korzystania z funkcji RANKING_STRATEGY_RELEVANCE_SCORING. (I069b9)
  • Dodaj Person i ContactPoint, aby wysyłać zapytania do zbioru Person w AppSearch. (Ia58f9)
  • Dodano nowy typ dokumentu ImageObject na wzór http://schema.org/ImageObject. (I6a0c0)
  • Dodaj tokenizer VERBATIM, który umożliwia dodawanie właściwości bez interpretacji przez AppSearch. (I47bc0)
  • Dodano RFC822_TOKENIZATION jako typ tokena, co umożliwia tokenizację adresów e-mail. (I8a390)
  • Włącz wyszukiwanie globalne w widoku debugowania. (I51fb2)

Zmiany w interfejsie API

  • Usunięto metody, które zwracają ListenableFuture i nie mają przyrostka Async. (I0515f)
  • Dodaliśmy możliwość konfigurowania projekcji za pomocą klasy Document. (I94576)
  • Dodaj pola ThingAlarm, AlarmInstance, Timer, Stopwatch, StopwatchLap, ContactPoint i Person (Id876c)

Poprawki błędów

  • Pełna obsługa funkcji Androida 13 w appsearch-platform-storage (Ia8e61)
  • Rozwiązanie problemów z zastępowaniem nazw schematów i pól prywatnych podczas korzystania z dziedziczenia.

Wersja 1.1.0-alpha02

24 sierpnia 2022 r.

Element androidx.appsearch:appsearch-*:1.1.0-alpha02 został zwolniony. Wersja 1.1.0-alpha02 zawiera te commity.

Nowe funkcje

  • przyspieszenie procesu optymalizacji dzięki zastosowaniu kompresji indeksu zamiast odtwarzania indeksu od początku;
  • Zmieniono tag logowania natywnych z „icing” na „AppSearchIcing” i domyślnie rejestrowano komunikaty INFO.

Zmiany w interfejsie API

  • Dodaje nowy obiekt PropertyPath do pracy z ścieżkami oraz nowe metody addProjection do obsługi PropertyPath. (I45588)
  • Dodano typy wbudowane builtin:Thing i AppSearch (I55427).
  • Zapobieganie wcześniejszemu tworzeniu pustych nazw właściwości w GenericDocument – wcześniej były one blokowane w momencie indeksowania, a teraz są blokowane w momencie GenericDocument.Builder.build() (I9e780)

Poprawki błędów

  • Usunięcie niepotrzebnego formatowania ciągów znaków w celu poprawy skuteczności oceny trafności
  • Bardziej wydajne pobieranie stron w przypadku nieczytelnych lub usuniętych dokumentów
  • Wdrożenie czyszczenia pamięci dla porzuconych zapytań
  • Poprawiono obsługę zagnieżdżonego indeksowania w przypadku Dokumentów. Wcześniej funkcja indexNestedProperties była ignorowana. (Iae9a6)

Darowizna zewnętrzna

  • Shea Smith: naprawiono obsługę zagnieżdżonego indeksowania w Dokumentach. (Iae9a6)

Wersja 1.1.0-alpha01

15 czerwca 2022 r.

Element androidx.appsearch:appsearch-*:1.1.0-alpha01 został zwolniony. Wersja 1.1.0-alpha01 została opracowana w ramach prywatnej gałęzi wstępnej wersji i nie zawiera publicznych zatwierdzeń.

Zmiany w interfejsie API

  • Wszystkie metody zwracające ListenableFuture zostały przemianowane i mają teraz przyrostek Async. Na przykład getSchema zmieniono na getSchemaAsync. Wcześniejsze wersje zostały wycofane i w przyszłej wersji zostaną usunięte.

Nowe funkcje

  • Pierwsza wersja pakietu appsearch-builtin-types. Ten projekt zawiera wbudowane typy oparte na schema.org, które mogą być wygodne dla klientów zamiast definiowania własnych typów dla typowych obiektów. W kolejnych wersjach dodamy więcej typów.
  • Możliwość konwertowania dokumentu AppSearch na dokument ShortcutInfoCompat za pomocą narzędzia ShortcutAdapter. Dzięki temu klienci mogą udostępniać dokumenty AppSearch w Google za pomocą biblioteki core-google-shortcuts.
  • Możliwość korzystania z klas @Document z dziedziczeniem. Pola nie mogą być zastępowane ani modyfikowane, ale można dodawać nowe pola, rozszerzając klasę oznaczoną adnotacją @Document.
  • Nowy interfejs Observer API, który umożliwia klientom rejestrowanie się w celu otrzymywania powiadomień, gdy typy, do których mają dostęp, ulegną zmianie lub gdy dokumenty tego typu zostaną dodane, zmodyfikowane lub usunięte. WAŻNE: obecna implementacja wysyła powiadomienia tylko wtedy, gdy aplikacja jest uruchomiona. Obecnie nie ma możliwości sprawdzenia zmian, które nastąpiły, gdy aplikacja była zatrzymana. W związku z tym nie należy polegać na tym interfejsie API.
  • Interfejs Property parser API, który umożliwia pełne przetwarzanie i sprawdzanie ścieżek usług zwracanych przez MatchInfo#getPropertyPath.
  • globalny interfejs API getById i globalny interfejs API getSchema do pobierania dokumentów i schematów z innych aplikacji, które przyznały Ci widoczność.
  • Możliwość pobierania informacji o widoczności w getSchema w przypadku danych, do których masz dostęp
  • możliwość przyznania widoczności aplikacjom, które mają określone uprawnienia Androida (ograniczone do wąskiego zestawu dozwolonych uprawnień);
  • Obsługa metod isFoo() w przypadku pól logicznych w procesorze adnotacji (dodatkowo do poprzedniego obsługiwanego stylu hasFoo()).
  • Obsługa nowych funkcji chronionych za pomocą @RequiresFeature. Aby sprawdzić, co obsługuje bieżący backend, użyj AppSearchSession#getFeatures.
  • Usunięcie limitu 13 tys. tokenów na poszczególne dokumenty
  • zezwalanie na dopasowywanie znaków spoza zestawu ASCII i znaków innych niż alfanumeryczne, np. emotikonów;

Poprawki błędów

  • Naprawiono błąd, który powodował niepowodzenie funkcji SetSchema podczas zastępowania zagnieżdżonego niezgodnego typu.
  • Poprawki mające na celu pełne obsługiwanie klas z adnotacjami @AutoValue używanych jako klasy @Document AppSearch
  • Rozwiązania niektórych problemów z awariami związanymi z powtarzającymi się listami klas dokumentów i innymi problemami
  • Naprawiono błąd, który w pewnych okolicznościach powodował awarię wyszukiwania prefiksów.
  • Naprawiono błąd w funkcji GetStorageInfo, który powodował zwracanie nieprawidłowych wartości w przypadku niepowodzeń operacji wejścia/wyjścia.
  • Rozwiązywanie problemów z BUSADDERR podczas czytania dokumentu
  • Naprawianie uszkodzenia pliku logcat spowodowanego wydrukowaniem niesformatowanego odcisku palca
  • Naprawianie wyjątków NPE spowodowanych błędami IO
  • Naprawiono wyciek pamięci w usługach GetSchemaType, Get, Delete, DeleteByNamespaceDeleteBySchemaType

Wersja 1.0.0

Wersja 1.0.0-alpha04

3 listopada 2021 r.

Element androidx.appsearch:appsearch-*:1.0.0-alpha04 został zwolniony. Wersja 1.0.0-alpha04 zawiera te commity.

Nowe funkcje

  • zależność Guava ListenableFuture automatycznie dodana jako zależność interfejsu API

Zmiany w interfejsie API

  • Aby uzyskać więcej informacji o każdym dopasowaniu, dodaj SearchResult#getSubmatchRange() i SearchResult#getSubmatch(). (I2fef6)
  • Udostępnianie danych według nazwy pakietu i certyfikatu

Poprawki błędów

  • Naprawiono błąd powodujący awarię, gdy użytkownik próbuje pobrać strony wyników po zakończeniu zestawu wyników.
  • Rozwiązanie problemu z zapytaniem dotyczącym wszystkich przestrzeni nazw, jeśli jako filtry zapytań podano tylko nieprawidłowe przestrzenie nazw
  • Rozwiązanie problemu polegającego na usuwaniu wszystkich przestrzeni nazw, jeśli jako filtry usuwania według zapytania podano tylko nieprawidłowe przestrzenie nazw.
  • Rozwiązanie problemu polegającego na tym, że w przypadku bardzo dużych dokumentów dane dokumentu przestawały być indeksowane po pewnym czasie.
  • Rozwiązanie problemu, który powodował pomijanie segmentów z liczbami spoza zestawu ASCII podczas tokenizacji
  • Dodanie sprawdzania kolejnych nieudanych prób inicjalizacji, aby pomóc w wyjściu z potencjalnie nieprawidłowego stanu, który uniemożliwia prawidłową inicjalizację.

Wersja 1.0.0-alpha03

21 lipca 2021 r.

Element androidx.appsearch:appsearch-*:1.0.0-alpha03 został zwolniony. Wersja 1.0.0-alpha03 zawiera te commity.

Nowe funkcje

  • wydanie platformy backendowej Platform Storage, aby umożliwić klientom korzystanie z interfejsu AppSearch API w ramach nowej usługi android.app.appsearch.AppSearchManager, która jest wprowadzana w Androidzie S. Więcej informacji znajdziesz w przewodniku dla programistów AppSearch.
  • Obsługa procesora adnotacji w AutoValue
  • Usunięcie limitu maksymalnego rozmiaru właściwości typu pojedynczy ciąg znaków
  • Nowy format pamięci masowej w celu zmniejszenia opóźnienia inicjalizacji
  • jednorazowa wewnętrzna migracja danych ze starego formatu na nowy;

Poprawki błędów

  • prawidłowo egzekwuje maksymalny limit dokumentów podczas wstawiania nowych dokumentów,
  • Usunięto awarię podczas tworzenia sesji wyszukiwania w aplikacji.
  • Naprawiono błędy w SetSchema, które nie wykrywały niektórych przypadków niezgodności wstecznej i niezgodności indeksu.

Wersja 1.0.0-alpha02

30 czerwca 2021 r.

Funkcje androidx.appsearch:appsearch:1.0.0-alpha02, androidx.appsearch:appsearch-compiler:1.0.0-alpha02androidx.appsearch:appsearch-local-storage:1.0.0-alpha02 są dostępne. Wersja 1.0.0-alpha02 zawiera te commity.

Nowe funkcje

  • Pełna obsługa języków: chiński, japoński, koreański, tajski
  • Zmniejszony rozmiar androidx.appsearch:appsearch-local-storage
  • Usunięcie limitu maksymalnego rozmiaru powtarzających się właściwości
  • Zezwalanie na ponowne używanie klas Builder
  • Ulepszenia w toString() niektórych obiektów w celu ułatwienia debugowania
  • Ulepszenia dokumentacji Javadoc

Zmiany w interfejsie API

  • Zmieniono nazwę użytkownika z „SearchResult#getMatches” na „SearchResult#getMatchInfos”.
  • Zmieniono nazwę użytkownika z „@Document.Int64Property” na „@Document.LongProperty

Poprawki błędów

  • Ulepszenia i poprawki dotyczące obliczania fragmentów wyników
  • Poprawki błędów w inicjalizowaniu sesji wyszukiwania w aplikacji

Wersja 1.0.0-alpha01

5 maja 2021 roku

Funkcje androidx.appsearch:appsearch:1.0.0-alpha01, androidx.appsearch:appsearch-compiler:1.0.0-alpha01androidx.appsearch:appsearch-local-storage:1.0.0-alpha01 są dostępne. Wersja 1.0.0-alpha01 zawiera te commity.

Nowe funkcje

AppSearch to biblioteka wyszukiwania służąca do zarządzania lokalnie przechowywanymi uporządkowanymi danymi. Zawiera interfejsy API do indeksowania danych i ich pobierania za pomocą wyszukiwania pełnego tekstu. Używaj go do tworzenia niestandardowych funkcji wyszukiwania w aplikacji dla użytkowników. Ta pierwsza wersja to 1.0.0-alpha01.