/companies/search, /people/search, /companies/advertisements/search) teilen sich eine einzige Filter-Engine. Sie stellen einen Anfrage-Body einmal zusammen, und dieselben Regeln gelten über alle Endpunkte hinweg — einschließlich der Art, wie Mehrwert-Filter kombiniert werden, wie Standorte abgeglichen werden und wie Sie den Standardoperator mit filter_conditions überschreiben.
Warum eine einheitliche Filter-Engine?
Ein Schema, drei Endpunkte
Filter auf Unternehmensebene wie
technologies, verticals und founded_dates funktionieren identisch auf /companies/search, /people/search und innerhalb von Monitor-company_filters — Sie lernen sie einmal.AND/OR pro Filter
Der Standard ist OR (beliebiger Treffer). Heben Sie einzelne Filter auf AND (jeder muss zutreffen) an, indem Sie einen Eintrag zu
filter_conditions hinzufügen — ohne den Rest des Bodys zu ändern.Postgres-native Operatoren
Array-Filter kompilieren zu nativen Postgres-Operatoren —
&& (Überschneidung) für OR, @> (enthält) für AND. Indexfreundlich, keine anwendungsseitige Nachfilterung.Dieselben Filter in Monitoren
Der
company_filters-Block in Monitoren akzeptiert dieselbe Form, sodass ein funktionierender Such-Payload auch ein funktionierender Monitor-Payload ist.Aufbau einer Suchanfrage
Jede Suchanfrage besteht aus drei Ebenen im selben JSON-Body:
Eine minimale
/people/search-Anfrage, die alle drei Ebenen nutzt:
company_filters: Unternehmensschlüssel gruppiert halten
Das Wrapper-Objekt company_filters: {...} ist die empfohlene Art, Filter auf Unternehmensebene zu senden — es trennt visuell, welche Schlüssel die Person filtern und welche das Unternehmen, und entspricht der Form, die Monitore bereits verwenden, sodass Payloads sauber zwischen Such- und Monitor-Konfigurationen übertragbar sind.
Beide Stile funktionieren; die Engine flacht die eingebettete Form vor der Verarbeitung auf die oberste Ebene ab, und Schlüssel auf oberster Ebene gewinnen bei Konflikten:
filter_conditions-Überschreibung für einen Unternehmensschlüssel hinzufügen, platzieren Sie diese innerhalb von company_filters, damit sie mit den überschriebenen Schlüsseln zusammenbleibt.
Dieselbe Form bei den /search/similar-Varianten
POST /companies/search/similar und POST /people/search/similar akzeptieren denselben Filter-Body wie ihre nicht-ähnlichen Gegenstücke (einschließlich des company_filters-Wrappers und filter_conditions). Jeder fügt zusätzlich einen Ähnlichkeitsschritt hinzu:
Die Antworthülle ist ansonsten identisch mit dem Standard-
search-Endpunkt. Filter grenzen den Kandidatenpool ein, bevor die Ähnlichkeitsrangfolge angewendet wird — die Kombination von company_locations: ["US"] mit /people/search/similar liefert also die ähnlichsten US-basierten Personen zu Ihren Referenztiteln, das Muster „finde mehr Personen wie X innerhalb dieser Einschränkungen”.
Anders als die Standard-
/search-Endpunkte liefert /search/similar keine exakte pagination.total_entries — der Wert ist gedeckelt, da die Ähnlichkeitssuche Ergebnisse nach Relevanz einstuft und nur die besten Treffer anzeigt. Verwenden Sie die Ähnlichkeitssuche, um die besten Treffer zu finden, nicht um jeden einzelnen aufzuzählen.AND vs. OR — die eine Entscheidung pro Filter
Mehrwert-Filter (technologies, verticals, keywords, categories, …) akzeptieren ein Array. Der Operator entscheidet, was „Treffer” bedeutet:
- OR (Standard)
- AND
Beliebiger Treffer. Liefert Zeilen, deren Array sich mit der Eingabe überschneidet.Ein Unternehmen wird einbezogen, wenn sein Tech-Stack mindestens eines von
Python, PostgreSQL oder Kubernetes enthält. Kompiliert zu Postgres column && ARRAY[...].Verwenden, wenn: Sie breite Reichweite möchten — „interessiert an einem beliebigen dieser”, „in einem beliebigen dieser Länder ansässig”.Nicht in
filter_conditions aufgeführte Filter verwenden den Standardoperator (OR innerhalb eines Arrays, AND über unterschiedliche Filterschlüssel hinweg). Sie deklarieren nur die Überschreibungen — nie die Standardwerte.Was Sie überschreiben können
Jeder Endpunkt akzeptiert Überschreibungen für eine andere Schlüsselmenge. Die Schlüssel stammen aus dem OpenAPI-Enum jedes*_filter_conditions-Schemas:
Unternehmens-Endpunkt
company_filter_conditions-Schlüssel: keywords, verticals, vertical_categories, vertical_sub_categories, technologies, categories, advertisement_target_locations, advertisement_exclude_target_locations, advertisement_search_terms, places, exclude_places, job_exclude_locations.Personen-Endpunkt
people_filter_conditions-Schlüssel (delegieren an die Unternehmens-Engine): keywords, verticals, vertical_categories, vertical_sub_categories, technologies, categories, places, exclude_places, plus social_media.Anzeigen-Endpunkt
ads_filter_conditions-Schlüssel: target_locations, exclude_target_locations. Kleinere Menge, da Anzeigen nur nach Impressionsland gefiltert werden.Performance-Tipps
Früh nach indizierten Spalten filtern
Früh nach indizierten Spalten filtern
Standorte, Mitarbeiter-Bucketwerte und
founded_dates sind indiziert und reduzieren die Kandidatenmenge schneller als Freitext- oder Vertical-Filter. Kombinieren Sie sie mit ein oder zwei präzisen Filtern, bevor Sie zur Ähnlichkeitssuche greifen.Große Arrays nicht übermäßig mit AND verknüpfen
Große Arrays nicht übermäßig mit AND verknüpfen
column @> ARRAY[a, b, c, …] verlangt, dass jeder Wert vorhanden ist. Die Kardinalität wächst schnell — ein AND mit 10 Technologien in einer Kategorie mit durchschnittlich 3 Tech-Tags liefert fast null Zeilen und erzwingt einen vollständigen Scan. Bevorzugen Sie 2–4 Werte pro AND-Filter; wechseln Sie zu OR für explorative Abfragen.is_enable_similarity_search für Freitext-Eingaben verwenden
is_enable_similarity_search für Freitext-Eingaben verwenden
Wenn Sie keine Slug-IDs (Verticals, Technologien, Kategorien) angeben können und nur Freitext-Strings haben, setzen Sie
is_enable_similarity_search: true und similarity_score: 0.7. Die Engine löst Treffer auf, bevor der Filter angewendet wird — deutlich günstiger als das Durchsuchen von Text.Bereiche statt Enum-Listen für Größe und Umsatz bevorzugen
Bereiche statt Enum-Listen für Größe und Umsatz bevorzugen
employees: [[201, 500], [501, 1000]] (ein Array von Buckets) und revenues: [1000000, 5000000] (ein einzelner Min-/Max-Bereich) sind schneller und idiomatischer als lange ID-Listen.Filter für Werbeaktivität
/companies/search kann nach dem Werbeprofil eines Unternehmens filtern — wie viele Anzeigen es schaltet, ob welche aktuell aktiv sind, welche Plattformen und Formate es nutzt und wie es im Vergleich zu anderen Werbetreibenden in einem bestimmten Land rangiert. POST /companies/advertisements/search akzeptiert jeden dieser Filter ebenfalls (advertisement_active_ads, advertisement_running_ads, advertisement_total_ads, advertisement_platform_count, advertisement_format_count, advertisement_impressions_estimate, advertisement_formats, advertisement_country_activity) — eine Anzeige wird einbezogen, wenn das zugehörige Unternehmen die Bedingung erfüllt.
Verwenden Sie
null für eine offene Grenze — [1, null] bedeutet „mindestens 1”, [null, 500] bedeutet „500 oder weniger”.
Rangfolge innerhalb eines Landes
advertisement_country_activity bezieht Rang, Perzentil und Volumen-Score jeweils auf ein Land — der Anzeigenrang eines Unternehmens in den USA sagt nichts über seinen Rang in Deutschland aus, daher ist country erforderlich:
advertisement_country_activity mit den obigen länderübergreifenden Filtern in derselben Anfrage — zum Beispiel „unter den Top 500 in den USA rangiert und unternehmensweit mindestens 100 aktive Anzeigen”:
Nächste Schritte
filter_conditions
Referenzseite — jeder unterstützte Schlüssel, jeder Standard und kopierbare AND-/OR-Rezepte.
People + Company Filters
Verwenden Sie jeden Unternehmensfilter innerhalb von
/people/search. Die Hauptfunktion der einheitlichen Engine.Company Search reference
Vollständiges Anfrage-/Antwortschema für
/companies/search.People Search reference
Vollständiges Anfrage-/Antwortschema für
/people/search.Suchen Sie die Anleitung zum dashboardseitigen Filtern? Siehe Filtering & Exporting Contacts in der Knowledge Base.

