Wenn Sie eine Suchanwendung mit strukturierten Daten oder unstrukturierten Daten mit Metadaten haben, können Sie die Metadaten verwenden, um Ihre Suchanfragen zu filtern. Auf dieser Seite wird erläutert, wie Sie Metadatenfelder verwenden, um Ihre Suche auf eine bestimmte Gruppe von Dokumenten zu beschränken.
Beispiel für Metadaten
Sehen Sie sich dieses Beispiel für Metadaten in vier PDF-Dateien (document_1.pdf, document_2.pdf, document_3.pdf und document_4.pdf) an. Diese Metadaten befinden sich zusammen mit den PDF-Dateien in einer JSON-Datei in einem Cloud Storage-Bucket. Sie können im Verlauf dieser Seite auf dieses Beispiel zurückgreifen.
{"id": "1", "structData": {"title": "Policy on accepting corrected claims", "category": ["persona_A"]}, "content": {"mimeType": "application/pdf", "uri": "gs://bucketname_87654321/data/document_1.pdf"}}
{"id": "2", "structData": {"title": "Claims documentation and reporting guidelines for commercial members", "category": ["persona_A", "persona_B"]}, "content": {"mimeType": "application/pdf", "uri": "gs://bucketname_87654321/data/document_2.pdf"}}
{"id": "3", "structData": {"title": "Claims guidelines for bundled services and supplies for commercial members", "category": ["persona_B", "persona_C"]}, "content": {"mimeType": "application/pdf", "uri": "gs://bucketname_87654321/data/document_3.pdf"}}
{"id": "4", "structData": {"title": "Advantage claims submission guidelines", "category": ["persona_A", "persona_C"]}, "content": {"mimeType": "application/pdf", "uri": "gs://bucketname_87654321/data/document_4.pdf"}}
Filterausdruckssyntax
Sie sollten die Syntax des Filterausdrucks verstehen, mit dem Sie den Suchfilter definieren. Die Filterausdruckssyntax kann mit der folgenden Extended Backus–Naur Form zusammengefasst werden:
# A single expression or multiple expressions that are joined by "AND" or "OR". filter = expression, { " AND " | "OR", expression }; # Expressions can be prefixed with "-" or "NOT" to express a negation. expression = [ "-" | "NOT " ], # A parenthetical expression. | "(", expression, ")" # A simple expression applying to a text field. # Function "ANY" returns true if the field exactly matches any of the literals. | text_field, ":", "ANY", "(", literal, { ",", literal }, ")" # A simple expression applying to any indexable field. # Preview: Function "EXISTS" returns true if the field is not NULL, empty, or containing the default value. | text_field, ":", "EXISTS" | numerical_field, ":", "EXISTS" # Function "CONTAINS" returns true if the field contains the tokens in any of the literals. # This is a partial match, not an exact match. | text_field, ":", "CONTAINS", "(", literal, ")" # Function "STARTS_WITH" returns true if the field begins with the same characters # as in any of the literals. The prefix matches up to 12 characters. | text_field, ":", "STARTS_WITH", "(", literal, ")" # A simple expression applying to a numerical field. Function "IN" returns true # if a field value is within the range. By default, lower_bound is inclusive and # upper_bound is exclusive. | numerical_field, ":", "IN", "(", lower_bound, ",", upper_bound, ")" # A simple expression that applies to a numerical field and compares with a double value. | numerical_field, comparison, double # An expression that applies to a geolocation field with text/street/postal address. | geolocation_field, ":", "GEO_DISTANCE(", literal, ",", distance_in_meters, ")" # An expression that applies to a geolocation field with latitude and longitude. | geolocation_field, ":", "GEO_DISTANCE(", latitude_double, ",", longitude_double, ",", distance_in_meters, ")" # Datetime field | datetime_field, comparison, literal_iso_8601_datetime_format); # A lower_bound is either a double or "*", which represents negative infinity. # Explicitly specify inclusive bound with the character 'i' or exclusive bound # with the character 'e'. lower_bound = ( double, [ "e" | "i" ] ) | "*"; # An upper_bound is either a double or "*", which represents infinity. # Explicitly specify inclusive bound with the character 'i' or exclusive bound # with the character 'e'. upper_bound = ( double, [ "e" | "i" ] ) | "*"; # Supported comparison operators. comparison = "<=" | "<" | ">=" | ">" | "="; # A literal is any double quoted string. You must escape backslash (\) and # quote (") characters. literal = double quoted string; text_field = text field - for example, category; numerical_field = numerical field - for example, score; geolocation_field = field of geolocation data type - for example home_address, location; datetime_field = field of datetime data type - for example creation_date, expires_on; literal_iso_8601_datetime_format = either a double quoted string representing ISO 8601 datetime or a numerical field representing microseconds from unix epoch.
Schlüsselattribute, die das Filtern unterstützen
Auch wenn ein Feld mit einem Schlüsselattribut als indexierbar festgelegt ist, unterstützt es möglicherweise keine Filterung, Facetten und Sortierung. Sie können beispielsweise nicht nach einem Feld filtern, das dem Schlüsselattribut title zugeordnet ist.
Die folgenden Felder mit Schlüsselattributen können für Filterung, Facetten und Neuanordnung verwendet werden.
Felder mit Schlüsselattributen für die benutzerdefinierte Suche, die in Filtern, Facetten und Sortierung verwendet werden können:
CATEGORIES(category)CREATE_TIME(create_time)HASHTAGS(hashtag)LANGUAGE_CODE(language_code)UPDATE_TIME(update_time)URI(uri)
Felder mit Schlüsselattributen für die Mediensuche, die in Filtern, Facetten und Sortierung verwendet werden können:
MEDIA_AVAILABLE_TIME(media_available_time)MEDIA_CONTENT_INDEX(media_content_index)MEDIA_CONTENT_RATING(media_content_rating)MEDIA_COUNTRY_OF_ORIGIN(media_country_of_origin)MEDIA_DURATION(media_duration)MEDIA_EXPIRE_TIME(media_expire_time)MEDIA_FILTER_TAGS(media_filter_tag)MEDIA_HASH_TAGS(media_hash_tag)MEDIA_IN_LANGUAGES(media_in_language)MEDIA_LIVE_EVENT_END_TIME(media_live_event_end_time)MEDIA_LIVE_EVENT_START_TIME(media_live_event_start_time)MEDIA_PRODUCTION_YEAR(media_production_year)MEDIA_TYPE(media_type)
Hinweis
Sie müssen eine Anwendung erstellt und strukturierte Daten oder unstrukturierte Daten mit Metadaten aufgenommen haben. Weitere Informationen finden Sie unter Suchanwendung erstellen.
Suche mit einem Metadatenfilter
So führen Sie eine Suche mit einem Metadatenfilter aus:
Legen Sie das Metadatenfeld fest, das zum Filtern Ihrer Suchanfragen verwendet werden soll.
Für die Metadaten im Abschnitt Hinweis können Sie beispielsweise das Feld
categoryals Suchfilter verwenden. Wenn Sie strukturierte Daten filtern, wie im Beispiel für Metadaten, geben Sie den vollständigen Pfad zum Feld an:structData.category. Dann können Ihre Nutzer nachpersona_A,persona_Boderpersona_Cfiltern, sodass ihre Suche auf die Dokumente beschränkt wird, die mit der gewünschten Persona verknüpft sind.Metadatenfeld indexierbar machen:
Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf und klicken Sie im Navigationsmenü auf Apps.
Klicken Sie auf Ihre Suchanwendung.
Klicken Sie im Navigationsmenü auf Daten.
Klicken Sie auf den Tab Schema. Auf diesem Tab werden die aktuellen Feldeinstellungen angezeigt.
Klicken Sie auf Bearbeiten.
Klicken Sie das Kästchen