Wenn Sie eine Such-App haben, die strukturierte Daten oder unstrukturierte Daten mit Metadaten verwendet, können Sie Ihre Suchanfragen mithilfe der Metadaten filtern. Auf dieser Seite wird erläutert, wie Sie mithilfe von Metadatenfeldern die Suche auf eine bestimmte Gruppe von Dokumenten beschränken.
Hinweise
Sie müssen eine App erstellt und strukturierte Daten oder unstrukturierte Daten mit Metadaten aufgenommen haben. Weitere Informationen finden Sie unter Such-App erstellen.
Beispiel für Metadaten
Sehen Sie sich dieses Beispiel für Metadaten für vier PDF-Dateien (document_1.pdf
, document_2.pdf
, document_3.pdf
und document_4.pdf
) an. Diese Metadaten würden zusammen mit den PDF-Dateien in einer JSON-Datei in einem Cloud Storage-Bucket gespeichert. Sie können sich dieses Beispiel in den folgenden Abschnitten immer wieder ins Gedächtnis rufen.
{"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 müssen die Syntax des Filterausdrucks kennen, mit dem Sie den Suchfilter definieren. Die Filterausdruckssyntax kann mit der folgenden erweiterten 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.
Mit einem Metadatenfilter suchen
So suchen Sie mit einem Metadatenfilter:
Legen Sie das Metadatenfeld fest, das zum Filtern Ihrer Suchanfragen verwendet werden soll. Für die Metadaten unter Vorab können Sie beispielsweise das Feld
category
als Suchfilter verwenden. Ihre Nutzer können nachpersona_A
,persona_B
oderpersona_C
filtern, damit ihre Suche auf die Dokumente beschränkt wird, die mit der Persona verknüpft sind, für die sie sich interessieren.Metadatenfeld indexierbar machen:
Rufen Sie in der Google Cloud Console die Seite Agent Builder auf und klicken Sie im Navigationsmenü auf Apps.
Klicken Sie auf Ihre Such-App.
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 für das Feld, das indexierbar sein soll, das Kästchen Indexierbar an.
Klicken Sie auf Speichern. Weitere Informationen finden Sie unter Feldeinstellungen konfigurieren.
Suchen Sie die Datenspeicher-ID. Wenn Sie die Datenspeicher-ID bereits haben, fahren Sie mit dem nächsten Schritt fort.
Rufen Sie in der Google Cloud Console die Seite Agent Builder auf und klicken Sie im Navigationsmenü auf Datenspeicher.
Klicken Sie auf den Namen des Datenspeichers.
Rufen Sie auf der Datenseite Ihres Datenspeichers die Datenspeicher-ID ab.
Suchergebnisse abrufen
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" }'
- PROJECT_ID: Die ID Ihres Projekts.
- DATA_STORE_ID: Die ID Ihres Datenspeichers.
- QUERY: Der Suchbegriff.
- FILTER: Optional. Ein Textfeld, mit dem Sie mithilfe der Syntax für Filterausdrücke nach einer bestimmten Gruppe von Feldern filtern können. Der Standardwert ist ein leerer String, d. h. es wird kein Filter angewendet.
Angenommen, Sie haben die vier PDF-Dateien mit Metadaten aus Vorbereitung importiert. Sie möchten nach Dokumenten suchen, die das Wort „Ansprüche“ enthalten, und nur Dokumente mit dem Wert „
persona_A
“ fürcategory
abfragen. Dazu fügen Sie die folgenden Anweisungen in Ihren Aufruf ein:"query": "claims", "filter": "category: ANY(\"persona_A\")"
Weitere Informationen finden Sie auf dem Tab „REST“ unter Suchergebnisse für eine App mit strukturierten oder unstrukturierten Daten abrufen.
Klicken Sie für eine Beispielantwort.
Wenn Sie eine Suche wie die im vorherigen Verfahren beschriebene ausführen, erhalten Sie eine Antwort, die in etwa so aussieht: Die Antwort enthält die drei Dokumente, deren
category
-Wertpersona_A
ist.{ "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 | Es werden nur Ergebnisse für Dokumente zurückgegeben, bei denen Folgendes zutrifft: |
---|---|
category: ANY(\"persona_A\") |
das Textfeld category ist persona_A |
score: IN(*, 100.0e) |
Das numerische Feld score ist größer als negative Unendlichkeit und kleiner als 100,0. |
non-smoking = \"true\" |
der boolesche Wert non-smoking wahr ist |
pet-friendly = \"false\" |
der boolesche Wert pet-friendly ist falsch |
manufactured_date = \"2023\" |
manufactured date ist ein beliebiger Zeitpunkt im Jahr 2023. |
manufactured_date >= \"2024-04-16\" |
der manufactured_date am oder nach dem 16. April 2024 liegt |
manufactured_date < \"2024-04-16T12:00:00-07:00\" |
der manufactured_date vor 12:00 Uhr Pacific Daylight Time (PDT) am 16. April 2024 liegt |
office.location:GEO_DISTANCE(\"1600 Amphitheater Pkwy, Mountain View, CA, 94043\", 500) |
das Feld für die Standortermittlung office.location befindet sich in einem Umkreis von 500 m um 1600 Amphitheatre Parkway |
NOT office.location:GEO_DISTANCE(\"Palo Alto, CA\", 1000) |
das Feld „Standort“ office.location nicht im Umkreis von 1 km um Palo Alto, Kalifornien, liegt. |
office.location:GEO_DISTANCE(34.1829, -121.293, 500) |
das Feld „geolocation“ office.location befindet sich in einem Umkreis von 500 m um den Breitengrad 34,1829 und den 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) |
office.location befindet sich in einer Entfernung von maximal 500 m zu Mountain View oder Palo Alto. |
(price<175 AND pet-friendly = \"true\") OR (price<125 AND pet-friendly = \"false\") |
price ist kleiner als 175 und ich kann mein Haustier mitbringen oder price ist kleiner als 125 und ich kann mein Haustier nicht mitbringen |
Nächste Schritte
- Um die Auswirkungen von Filtern auf die Suchqualität zu verstehen, sollten Sie die Suchqualität bewerten. Weitere Informationen finden Sie unter Suchqualität bewerten.