/companies/search, /people/search, /companies/advertisements/search) используют единый движок фильтров. Вы составляете тело запроса один раз, и одни и те же правила действуют на всех эндпоинтах — включая способ комбинирования мультизначных фильтров, сопоставление локаций и переопределение оператора по умолчанию с помощью filter_conditions.
Зачем единый движок фильтров?
Одна схема, три эндпоинта
Фильтры на уровне компании, такие как
technologies, verticals и founded_dates, работают одинаково на /companies/search, /people/search и внутри company_filters в мониторах — вы изучаете их один раз.AND/OR для каждого фильтра
По умолчанию используется OR (совпадает любое). Переведите отдельные фильтры в AND (совпадают все), добавив одну запись в
filter_conditions — не затрагивая остальную часть тела запроса.Фильтрация до пагинации
Каждый фильтр применяется до возврата результатов, поэтому каждая страница и итоговое количество отражают весь ваш запрос. Без постфильтрации на стороне приложения.
Те же фильтры в мониторах
Блок
company_filters в Monitors принимает ту же форму, поэтому рабочий payload поиска также является рабочим payload монитора.Анатомия поискового запроса
Каждый поисковый запрос строится из трёх слоёв в одном JSON-теле:
Минимальный запрос
/people/search, использующий все три слоя:
company_filters: держите ключи уровня компании сгруппированными
Обёртка company_filters: {...} — рекомендуемый способ отправки фильтров уровня компании: она визуально отделяет, какие ключи фильтруют человека, а какие — компанию, и соответствует форме, которую уже использует Monitors, поэтому payload’ы без изменений переносятся между конфигурациями поиска и монитора.
Оба стиля работают; движок разворачивает обёрнутую форму на верхний уровень перед обработкой, и ключи верхнего уровня побеждают при конфликте:
filter_conditions для ключа уровня компании, размещайте его внутри company_filters, чтобы оно перемещалось вместе с ключами, которые переопределяет.
Та же форма у вариантов /search/similar
POST /companies/search/similar и POST /people/search/similar принимают то же тело фильтров, что и их обычные аналоги (включая обёртку company_filters и filter_conditions). Каждый добавляет сверху шаг сходства:
Фильтры сужают пул кандидатов до применения сходства — поэтому сочетание
company_locations: ["US"] с /people/search/similar возвращает наиболее близких людей из США к вашим референсным должностям, что и является паттерном «найти больше похожих на X в этих ограничениях».
/companies/search/similar возвращает data в виде простого массива компаний — объекта pagination нет. Для постраничного обхода результатов используйте page и per_page. Используйте поиск похожих, чтобы найти лучшие совпадения, а не чтобы перечислить каждое.AND против OR — единственное решение, которое вы принимаете на фильтр
Мультизначные фильтры (technologies, verticals, keywords, categories, …) принимают массив. Оператор определяет, что означает «совпадение»:
- OR (по умолчанию)
- AND
Совпадает любое значение. Возвращает строки, чей массив пересекается с вводом.Компания включается, если её технологический стек содержит хотя бы одну из
Python, PostgreSQL или Kubernetes.Используйте, когда: вам нужен широкий охват — «интересуется любым из этого», «находится в любой из этих стран».Фильтры, не перечисленные в
filter_conditions, используют оператор по умолчанию (OR внутри массива, AND между разными ключами фильтров). Вы объявляете только переопределения — никогда значения по умолчанию.Что можно переопределить
Каждый эндпоинт принимает переопределения для своего набора ключей. Ключи берутся из перечисления OpenAPI на каждой схеме*_filter_conditions:
Эндпоинт компаний
Ключи
company_filter_conditions: keywords, verticals, vertical_categories, vertical_sub_categories, technologies, categories, social_media, advertisement_target_locations, job_exclude_locations.Эндпоинт людей
Ключи
people_filter_conditions: keywords, verticals, vertical_categories, vertical_sub_categories, technologies, categories, social_media.Эндпоинт рекламы
Ключи
ads_filter_conditions: target_locations, publisher_platforms.Советы по производительности
Начинайте с самых узких фильтров
Начинайте с самых узких фильтров
Локации, диапазоны числа сотрудников и
founded_dates сокращают набор кандидатов быстрее, чем свободный текст или фильтры по вертикалям. Сочетайте их с одним-двумя точными фильтрами, прежде чем прибегать к поиску по сходству.Не злоупотребляйте AND на больших массивах
Не злоупотребляйте AND на больших массивах
AND требует наличия каждого значения. AND по 10 технологиям возвращает почти ноль строк. Предпочитайте 2-4 значения на фильтр AND; переключайтесь на OR для исследовательских запросов.
Используйте is_enable_similarity_search для свободного текста
Используйте is_enable_similarity_search для свободного текста
Если вы не можете предоставить slug ID (вертикали, технологии, категории) и у вас есть только строки свободного текста, установите
is_enable_similarity_search: true и similarity_score: 0.7. Движок разрешает совпадения перед применением фильтра — гораздо дешевле, чем сканирование текста.Предпочитайте диапазоны спискам перечислений для размера и выручки
Предпочитайте диапазоны спискам перечислений для размера и выручки
employees: [[201, 500], [501, 1000]] (массив диапазонов) и revenues: [1000000, 5000000] (единый диапазон мин/макс) быстрее и более идиоматичны, чем длинные списки ID.Фильтры активности рекламы
/companies/search может фильтровать по рекламной активности компании — сколько рекламы она размещает, есть ли активные объявления сейчас, какие платформы и форматы использует и как она ранжируется относительно других рекламодателей в определённой стране. POST /companies/advertisements/search также принимает все эти фильтры (advertisement_active_ads, advertisement_running_ads, advertisement_total_ads, advertisement_platform_count, advertisement_format_count, advertisement_impressions_estimate, advertisement_formats, advertisement_country_activity) — объявление включается, если компания-владелец соответствует границе.
Используйте
null для открытой границы — [1, null] означает «не менее 1», [null, 500] означает «500 или меньше».
Ранжирование внутри страны
advertisement_country_activity привязывает ранг, процентиль и оценку объёма к одной стране за раз — ранг рекламы компании в США ничего не говорит о её ранге в Германии, поэтому country обязателен:
advertisement_country_activity со общестрановыми фильтрами выше в одном запросе — например, «в топ-500 в США и имеет не менее 100 активных объявлений по всей компании»:
Сортировка результатов
Фильтрация поadvertisement_country_activity сужает, какие компании возвращаются; сама по себе она не определяет порядок. Чтобы получить сначала крупнейших рекламодателей на этом рынке, укажите sort_by: "advertisement_country_rank":
advertisement_country_activity, каждая компания также несёт своё положение в этой стране, поэтому вы можете показать ранг, по которому фильтровали:
sort_by: "advertisement_country_rank" игнорируется, когда advertisement_country_activity отсутствует, поскольку ранг существует только внутри страны. Передайте is_ascending_order: false, чтобы сначала вывести самых мелких рекламодателей на рынке.
Поиск новых участников рынка
advertisement_country_activity также принимает два интервала дат, поэтому вы можете спросить, кто начал рекламироваться на рынке, а не кто уже крупен на нём:
Компании, вышедшие в Японию с начала июля:
null для открытого интервала. Даты интерпретируются в часовом поясе запроса. Компания, у рекламы которой нет даты начала, не имеет значения первого показа и считается неизвестной — она никогда не отмечается как новая. Комбинируйте с ранговыми ключами в том же объекте, чтобы сузить выборку ещё сильнее, например новые участники, которые уже много тратят.
Следующие шаги
filter_conditions
Справочник — каждый поддерживаемый ключ, каждое значение по умолчанию и готовые к копированию рецепты AND/OR.
People + Company Filters
Используйте любой фильтр компании внутри
/people/search. Главная новая возможность единого движка.Справочник Company Search
Полная схема запроса/ответа для
/companies/search.Справочник People Search
Полная схема запроса/ответа для
/people/search.Ищете описание фильтрации на стороне дашборда? См. Фильтрация и экспорт контактов в базе знаний.

