/companies/search, /people/search, /companies/advertisements/search) partagent un moteur de filtres unique. Vous composez un corps de requête une seule fois et les mêmes règles s’appliquent à tous les endpoints — y compris la façon dont les filtres à valeurs multiples se combinent, la façon dont les lieux sont mis en correspondance, et la façon dont vous remplacez l’opérateur par défaut avec filter_conditions.
Pourquoi un moteur de filtres unifié ?
Un seul schéma, trois endpoints
Les filtres au niveau entreprise comme
technologies, verticals et founded_dates fonctionnent de façon identique sur /companies/search, /people/search, et à l’intérieur des company_filters des Monitors — vous les apprenez une seule fois.AND/OR par filtre
La valeur par défaut est OR (correspond à au moins un). Passez des filtres individuels en AND (correspond à tous) en ajoutant une seule entrée à
filter_conditions — sans toucher au reste du corps de la requête.Opérateurs natifs Postgres
Les filtres de tableau se compilent en opérateurs Postgres natifs —
&& (chevauchement) pour OR, @> (contient) pour AND. Compatibles avec les index, sans post-filtrage côté application.Mêmes filtres dans les Monitors
Le bloc
company_filters des Monitors accepte la même structure, de sorte qu’un payload de recherche fonctionnel est également un payload de monitor fonctionnel.Anatomie d’une requête de recherche
Chaque requête de recherche est construite à partir de trois couches dans le même corps JSON :
Une requête
/people/search minimale utilisant les trois couches :
company_filters : regrouper les clés au niveau entreprise
L’objet enveloppant company_filters: {...} est la façon recommandée d’envoyer les filtres au niveau entreprise — il sépare visuellement les clés qui filtrent la personne de celles qui filtrent l’entreprise, et correspond à la structure déjà utilisée par les Monitors, de sorte que les payloads se transfèrent proprement entre les configurations de recherche et de monitor.
Les deux styles fonctionnent ; le moteur aplatit la forme enveloppée au premier niveau avant traitement, et les clés de premier niveau l’emportent en cas de conflit :
filter_conditions pour une clé au niveau entreprise, placez-le à l’intérieur de company_filters afin qu’il voyage avec les clés qu’il remplace.
Même structure sur les variantes /search/similar
POST /companies/search/similar et POST /people/search/similar acceptent le même corps de filtres que leurs équivalents non « similar » (y compris l’enveloppe company_filters et filter_conditions). Chacun ajoute une étape de similarité par-dessus :
L’enveloppe de réponse est par ailleurs identique à celle de l’endpoint
search standard. Les filtres réduisent le vivier de candidats avant l’application du classement par similarité — combiner company_locations: ["US"] avec /people/search/similar renvoie donc les personnes basées aux États-Unis les plus proches de vos titres de référence, ce qui correspond au schéma « trouver plus de personnes comme X dans ces contraintes ».
Contrairement aux endpoints
/search standard, /search/similar ne renvoie pas de pagination.total_entries exact — la valeur est plafonnée car la recherche par similarité classe les résultats par pertinence et ne fait remonter que les meilleures correspondances. Utilisez la recherche par similarité pour trouver les meilleures correspondances, pas pour énumérer chacune d’entre elles.AND ou OR — la seule décision à prendre par filtre
Les filtres à valeurs multiples (technologies, verticals, keywords, categories, …) acceptent un tableau. L’opérateur détermine ce que signifie « correspondance » :
- OR (par défaut)
- AND
Correspond à au moins une valeur. Renvoie les lignes dont le tableau chevauche l’entrée.Une entreprise est incluse si sa stack technologique contient au moins une des technologies
Python, PostgreSQL ou Kubernetes. Se compile en column && ARRAY[...] Postgres.À utiliser quand : vous voulez une large couverture — « intéressé par n’importe lequel de ces éléments », « situé dans n’importe lequel de ces pays ».Les filtres non listés dans
filter_conditions utilisent l’opérateur par défaut (OR au sein d’un tableau, AND entre clés de filtre distinctes). Vous ne déclarez que les remplacements — jamais les valeurs par défaut.Ce que vous pouvez remplacer
Chaque endpoint accepte des remplacements pour un ensemble de clés différent. Les clés proviennent de l’énumération OpenAPI de chaque schéma*_filter_conditions :
Endpoint entreprise
Clés
company_filter_conditions : 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.Endpoint personnes
Clés
people_filter_conditions (délèguent au moteur entreprise) : keywords, verticals, vertical_categories, vertical_sub_categories, technologies, categories, places, exclude_places, plus social_media.Endpoint annonces
Clés
ads_filter_conditions : target_locations, exclude_target_locations. Ensemble plus restreint car les annonces ne filtrent que par pays d’impression.Conseils de performance
Filtrez tôt sur les colonnes indexées
Filtrez tôt sur les colonnes indexées
Les lieux, les tranches d’effectifs et
founded_dates sont indexés et réduisent l’ensemble de candidats plus rapidement que les filtres en texte libre ou par verticale. Combinez-les avec un ou deux filtres précis avant de recourir à la recherche par similarité.N'abusez pas de AND sur de grands tableaux
N'abusez pas de AND sur de grands tableaux
column @> ARRAY[a, b, c, …] exige que chaque valeur soit présente. La cardinalité augmente rapidement — un AND sur 10 technologies dans une catégorie ayant en moyenne 3 tags technologiques renvoie un nombre de lignes proche de zéro et force un scan complet. Privilégiez 2 à 4 valeurs par filtre AND ; passez à OR pour les requêtes exploratoires.Utilisez is_enable_similarity_search pour une saisie en texte libre
Utilisez is_enable_similarity_search pour une saisie en texte libre
Si vous ne pouvez pas fournir d’identifiants slug (verticales, technologies, catégories) et disposez uniquement de chaînes en texte libre, définissez
is_enable_similarity_search: true et similarity_score: 0.7. Le moteur résout les correspondances avant d’appliquer le filtre — bien moins coûteux qu’un scan de texte.Préférez les plages aux listes d'énumérations pour la taille et le chiffre d'affaires
Préférez les plages aux listes d'énumérations pour la taille et le chiffre d'affaires
employees: [[201, 500], [501, 1000]] (un tableau de tranches) et revenues: [1000000, 5000000] (une seule plage min/max) sont plus rapides et plus idiomatiques que de longues listes d’identifiants.Filtres d’activité publicitaire
/companies/search peut filtrer sur l’empreinte publicitaire d’une entreprise — combien d’annonces elle diffuse, si certaines sont actuellement actives, quelles plateformes et formats elle utilise, et comment elle se classe par rapport aux autres annonceurs dans un pays donné. POST /companies/advertisements/search accepte également chacun de ces filtres (advertisement_active_ads, advertisement_running_ads, advertisement_total_ads, advertisement_platform_count, advertisement_format_count, advertisement_impressions_estimate, advertisement_formats, advertisement_country_activity) — une annonce est incluse si l’entreprise qui la possède satisfait la borne.
Utilisez
null pour une borne ouverte — [1, null] signifie « au moins 1 », [null, 500] signifie « 500 ou moins ».
Classement au sein d’un pays
advertisement_country_activity limite le rang, le percentile et le score de volume à un seul pays à la fois — le rang publicitaire d’une entreprise aux États-Unis ne dit rien de son rang en Allemagne, donc country est obligatoire :
advertisement_country_activity avec les filtres tous-pays ci-dessus dans la même requête — par exemple, « classée dans le top 500 aux États-Unis, et ayant au moins 100 annonces actives à l’échelle de l’entreprise » :
Étapes suivantes
filter_conditions
Page de référence — chaque clé prise en charge, chaque valeur par défaut, et des exemples AND/OR prêts à copier.
Filtres personnes + entreprise
Utilisez n’importe quel filtre entreprise à l’intérieur de
/people/search. La fonctionnalité phare du moteur unifié.Référence Recherche entreprise
Schéma complet de requête/réponse pour
/companies/search.Référence Recherche personnes
Schéma complet de requête/réponse pour
/people/search.Vous cherchez le guide de filtrage côté tableau de bord ? Voir Filtrer et exporter des contacts dans la base de connaissances.

