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.
Hinweis
Sie müssen eine Anwendung erstellt und strukturierte Daten oder unstrukturierte Daten mit Metadaten aufgenommen haben. Weitere Informationen finden Sie unter Suchanwendung erstellen.
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 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.
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. Ihre Nutzer können nachpersona_A,persona_Boderpersona_Cfiltern, sodass ihre Suche auf die Dokumente beschränkt wird, die mit der Identität verknüpft sind, die sie interessiert.Metadatenfeld indexierbar machen:
Rufen Sie in der Google Cloud Console die Seite Gemini Enterprise 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 Indexierbar für das Feld an, das Sie indexierbar machen möchten.
Klicken Sie auf Speichern. Weitere Informationen finden Sie unter Feldeinstellungen konfigurieren.
Suchen Sie nach Ihrer Datenspeicher-ID. Wenn Sie die ID Ihres Datenspeichers bereits haben, fahren Sie mit dem nächsten Schritt fort.
Rufen Sie in der Google Cloud Console die Seite Gemini Enterprise auf und klicken Sie im Navigationsmenü auf Datenspeicher.
Rufen Sie die Seite Datenspeicher auf.
Klicken Sie auf den Namen des Datenspeichers.
Rufen Sie auf der Datenseite Ihres Datenspeichers die Datenspeicher-ID ab.
Sehen Sie die Suchergebnisse in der Vorschau an.
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "filter": "FILTER" }'Ersetzen Sie Folgendes:
PROJECT_ID: Die Projekt-ID.DATA_STORE_ID: Die ID Ihres Datenspeichers.QUERY: Der Abfragetext für die Suche.FILTER: optional. Ein Textfeld, in dem Sie mit Filterausdruckssyntax nach einer bestimmten Gruppe von Feldern filtern können. Der Standardwert ist ein leerer String. Das bedeutet, dass kein Filter angewendet wird.
Angenommen, Sie haben die vier PDF-Dateien mit Metadaten aus dem Abschnitt Hinweis importiert. Sie möchten nach Dokumenten suchen, die das Wort „claims“ (Ansprüche) enthalten, und nur Dokumente mit dem
category-Wertpersona_Aabfragen. Dazu müssen Sie die folgenden Anweisungen in Ihren Aufruf einfügen:"query": "claims", "filter": "category: ANY(\"persona_A\")"Weitere Informationen finden Sie auf dem Tab „REST“ unter Vorschau der Suchergebnisse für eine App mit strukturierten oder unstrukturierten Daten ansehen.
Klicken Sie hier, um eine Beispielantwort zu sehen.
Wenn Sie eine Suche wie im vorherigen Verfahren durchführen, erhalten Sie eine Antwort ähnlich der folgenden. Die Antwort enthält die drei Dokumente mit dem
category-Wertpersona_A.{ "results": [ { "id": "2", "document": { "name": "projects/abcdefg/locations/global/collections/default_collection/dataStores/search_store_id/branches/0/documents/2", "id": "2", "structData": { "title": "Claims documentation and reporting guidelines for commercial members", "category": [ "persona_A", "persona_B" ] }, "derivedStructData": { "link": "gs://bucketname_87654321/data/document_2.pdf", "extractive_answers": [ { "pageNumber": "1", "content": "lorem ipsum" } ] } } }, { "id": "1", "document": { "name": "projects/abcdefg/locations/global/collections/default_collection/dataStores/search_store_id/branches/0/documents/1", "id": "1", "structData": { "title": "Policy on accepting corrected claims", "category": [ "persona_A" ] }, "derivedStructData": { "extractive_answers": [ { "pageNumber": "2", "content": "lorem ipsum" } ], "link": "gs://bucketname_87654321/data/document_1.pdf" } } }, { "id": "4", "document": { "name": "projects/abcdefg/locations/global/collections/default_collection/dataStores/search_store_id/branches/0/documents/4", "id": "4", "structData": { "title": "Advantage claims submission guidelines", "category": [ "persona_A", "persona_C" ] }, "derivedStructData": { "extractive_answers": [ { "pageNumber": "47", "content": "lorem ipsum" } ], "link": "gs://bucketname_87654321/data/document_4.pdf" } } } ], "totalSize": 330, "attributionToken": "UvBRCgsI26PxpQYQs7vQZRIkNjRiYWY1MTItMDAwMC0yZWIwLTg3MTAtMTQyMjNiYzYzMWEyIgdHRU5FUklDKhSOvp0VpovvF8XL8xfC8J4V1LKdFQ", "guidedSearchResult": {}, "summary": {} }
Beispiele für Filterausdrücke
Die folgende Tabelle enthält Beispiele für Filterausdrücke.
| Filter | Gibt nur Ergebnisse für Dokumente zurück, für die folgendes gilt: |
|---|---|
category: ANY(\"persona_A\") |
Das Textfeld category ist persona_A |
score: IN(*, 100.0e) |
Das numerische Feld score ist größer als negativ unendlich und kleiner als 100,0 |
non-smoking = \"true\" |
Der boolesche Wert non-smoking ist „true“ |
pet-friendly = \"false\" |
Der boolesche Wert pet-friendly ist „false“ |
manufactured_date = \"2023\" |
Das manufactured date ist ein beliebiger Zeitpunkt im Jahr 2023 |
manufactured_date >= \"2024-04-16\" |
Das manufactured_date ist der 16. April 2024 oder später |
manufactured_date < \"2024-04-16T12:00:00-07:00\" |
Das manufactured_date liegt vor 12:00 Uhr Pacific Daylight Time am 16. April 2024 |
office.location:GEO_DISTANCE(\"1600 Amphitheater Pkwy, Mountain View, CA, 94043\", 500) |
Der Wert für das Standortbestimmungsfeld office.location befindet sich in einem Umkreis von 500 m von der Adresse 1600 Amphitheater Pkwy |
NOT office.location:GEO_DISTANCE(\"Palo Alto, CA\", 1000) |
Der Wert für das Standortbestimmungsfeld office.location ist außerhalb eines Radius von 1 km um Palo Alto, Kalifornien |
office.location:GEO_DISTANCE(34.1829, -121.293, 500) |
Der Wert für das Standortbestimmungsfeld office.location befindet sich in einem Radius von 500 m vom Breitengrad 34,1829 und Längengrad -121,293 |
category: ANY(\"persona_A\") AND score: IN(*, 100.0e) |
category ist persona_A und score ist kleiner als 100 |
office.location:GEO_DISTANCE(\"Mountain View, CA\", 500) OR office.location:GEO_DISTANCE(\"Palo Alto, CA\", 500) |
Der Wert für office.location befindet sich in einem Umkreis von 500 m von Mountain View oder Palo Alto |
(price<175 AND pet-friendly = \"true\") OR (price<125 AND pet-friendly = \"false\") |
Der price ist weniger als 175 und ich kann mein Haustier mitbringen oder der price ist weniger als 125 und ich kann mein Haustier nicht mitbringen |
Nächste Schritte
- Um die Auswirkungen von Filtern auf die Suchqualität zu verstehen, müssen Sie die Suchqualität bewerten. Weitere Informationen zur Bewertung der Suchqualität.