Проверяя работы студентов на курсе IT рекрутер, я вижу, что тема булевых и x-ray запросов сложная для понимания. Хочу попробовать на примерах рассказать азы так, чтобы стало сильно понятнее.


Начнем с логики. Когда мы начинаем работу над вакансией, нам нужно выделить основные критерии, по которым мы будем искать.

Например, нам нужен python backend разработчик с опытом асинхронного программирования.

Боже, что такое асинхронное программирование??? Я с обычным‑то еще не могу разобраться, а тут асинхронное!

Первый закон ИТ-рекрутера: что я не знаю, я нагуглю.

По запросу «асинхронное программирование» в Google первые несколько статей очень хорошо и просто вам расскажут, что это такое. Углубляться сейчас не буду.

Еще когда вводим «асинхронное программирование» в поисковую строку первой предлагаемой строкой поискового запроса будет «асинхронное программирование python». Переходим по ссылочкам с описанием, изучаем. Ну круто же, правда?!

Вернемся к нашему запросу. Прочитав пару статей понимаем, что есть некоторые технологии, присущие асинхронному программированию. Например, фреймворки. Гуглим «фреймворки асинхронное программирование python». Получаем первой строкой Топ-5 асинхронных веб‑фреймворков на Python: Tornado, Sanic, Vibora, Quart, FastAPI. Добавим к этому собственно asyncio. Так уже у нас начинают набираться ключевые слова для поиска. Такой набор ключевых слов мы можем условно назвать синонимами, так как они относятся к одному признаку — в нашем случае асинхронному программированию. О синонимах всегда нужно помнить, и пытаться думать, как разработчик, а как же еще он мог указать это в профиле.

Смотрим дальше. Основная технология, которую мы видим в названии должности – python. Это тоже будет нашим ключевым словом. Но c python могут работать и аналитики, и дата сайентисты, и тестировщики.

Вы издеваетесь??? Как их вычленять-то? (слово какое, а!)

Начинающему ИТ-рекрутеру сложно, конечно, разобраться в таких тонкостях. Но мы все когда-то не умели ни говорить, ни ходить. Так что выдыхаем и гуглим. И по максимуму общаемся с разработчиками – они самый ценный источник информации.

Итак, про python и не тестировщиков. Для того, чтобы было понятно, какие питонисты нам нужны, в запросе есть слово бэкенд. Эта статья для начинающих ит-рекрутеров, поэтому знатокам стоит промолчать про то, что web-фрейворки отсеют аналитиков. Я хочу наглядно показать, как думать и выбирать ключевые слова для поиска. Все приходит с опытом, насмотренностью и практикой. Те, кто это читают сейчас, через год будут улыбаться себе сегодняшним и понимать, как оно все было не страшно.

Итак, к нашим ключевым словам прибавляется еще python.

А еще же ж есть «разработчик». Разве можно искать без этого слова?

Да, можно, но это следующая серия. Поэтому прибавляем к нашим ключевым словам еще и «разработчик». И думаем как разработчик: как я себя могу обозвать в профиле Linkedin? Мой профиль на английском, значит developer. А еще встречаются software engineer. Значит, это тоже кладется в нашу копилку ключевых слов.

Получается довольно много слов для одного запроса: Tornado, Sanic, Vibora, Quart, FastAPI, asyncio, python, разработчик, developer, software engineer. Должна быть очень точная выдача?

Да. Ноль. Если сомневаешься – вот ссылка

Да как так-то?!

Давай разбираться. Какова вероятность, что разработчик использует все асинхронные фреймворки сразу? Есть уникумы, конечно, но даже они могут не добавить их все в свой профиль. Поэтому нам достаточно упоминания одного из признаков асинхронного программирования. Один из самых распространенных фреймфорков Tornado, с него стоит начать.

И как тогда должен выглядеть запрос? Tornado разработчик developer software engineer?

Посмотри поисковую выдачу. Она тебя устраивает? Думаю, нет. Давай разбираться дальше. Снова стараемся думать как разработчик. Назову ли я себя тремя разными должностями в одном профиле? Такое тоже может быть, но вероятность, что тебе встретится именно такой парень все же не так велика.

А как же тогда быть, если они могут называть себя по-разному? Мы же можем не увидеть developer-ов, если будем искать только разработчиков.

Для этого есть операторы булевых запросов. И это следующий шаг в понимании, как искать разработчиков.

Давай сначала еще раз срезюмируем, какие ключевые слова мы выделили для поиска: Tornado, Sanic, Vibora, Quart, FastAPI, asyncio, python, разработчик, developer, software engineer. Разделим их по признакам: язык программирования, сфера применения, должность, асинхронное программирование. Получится такая табличка:

Обрати внимание, что backend я тоже расписала по-разному.

Если бы мы спрашивали по‑русски, мы бы задали вопрос так: «Встречаются ли в профиле такие слова python, backend или back‑end или back end, разработчик или developer или software engineer, асинхронное программирование или asyncio или Tornado или Sanic или Vibora или Quart или FastAPI?». Примерно также можно задать вопрос и поисковику. Только он не поймет наши «или», он же машина, поэтому существуют операторы, которые правильно транслируют этой машине наш запрос. И это очень важная тема. Хоть эти операторы и логические, но их все равно нужно запомнить. Особенно, если у тебя не очень с английским (тут скажу, что английский точно стоит учить!). Операторы называются логическими, потому что в переводе они означают именно то, что означают) Вот основные из них:

AND — нужен, чтобы найти страницы, на которых есть все указанные ключевые слова (для начала можно его писать, чтобы понимать логику составления запроса, потом его можно заменить на «пробел»).

OR — нужен, чтобы охватить категории, которые по сути одинаковые, но называются разными словами (привет, асинхронное программирование).

«-» — нужен, чтобы исключить из поиска ненужные слова или фразы (например, мы не хотим ребят из определенной компании). Обрати внимание, что после дефиса не должно быть пробелов, иначе поисковик не будет учитывать слово как исключение.

() — нужен, чтобы группировать части запроса и расставлять приоритеты (тут мы объединим ключевые слова по признакам, в нашем случае - язык программирования, сфера применения, должность, асинхронное программирование).

“ ” — нужен для поиска точных фраз (а это нужно, чтобы Google учел именно «software engineer», а не «… I like software. The engineer fixed…»). Обрати внимание, что важна английская раскладка.

Давай попробуем составить наш запрос с учетом этих операторов.

(Разработчик OR developer OR "software engineer") AND (Tornado OR Sanic OR Vibora OR Quart OR FastAPI OR asyncio) AND python

Здорово, правда? Мы учли все факторы, мы молодцы! Вот какая выборка у нас получается.

Собираем лавры и кайфуем от своей офигенности!

АААААААААААААААА!!!!!!!!!!!!! Как так-то????????????!!!!!!!!!!!!!

Да, жизнь не справедлива. Но тут виноваты мы сами. Давай анализировать, что не так.

Основная наша выдача — это вакансии. Логично исключить этот фактор. Вспоминаем, что обязательно думаем за тех, кто размещает контент — вакансия = vacancy = job = работа = jobs. Нужно исключить эти слова из нашего запроса. Попробуешь самостоятельно?

(Разработчик OR developer OR "software engineer") AND (backend OR back‑end OR "back end") (Tornado OR Sanic OR Vibora OR Quart OR FastAPI OR asyncio) AND python ‑вакансия ‑vacancy ‑job ‑работа ‑jobs

Смотрим, что получилось.

О! Уже есть профили Linkedin! Круто! Но 225 000 (цифра может быть другая, даже локация может влиять на выдачу) это же слишком много, как я смогу просмотреть всех?!

Думаем, размышляем, анализируем. Что нам нравится в поисковой выдаче? Правильно, профили в Linkedin. Мы видим практически резюме кандидата. Как сделать поисковую выдачу только с профилями в Linkedin?

Для этого есть свой логический оператор: «site:» — и это уже будет x‑ray поиск, мы как бы просвечиваем конкретный сайт на предмет нужных нам слов, как рентген.

Согласись, логично? Но помни, что пробелов между оператором и сайтом быть не должно, иначе поисковик не будет воспринимать сайт как ресурс, на котором нужно искать. Попробуем? Как тебе поисковая выдача? Круто, да? Хочешь что‑то исправить?

Было бы здорово видеть ребят из России, можно как-то?

Ask! ????

Есть несколько способов это сделать:

  • Добавить локацию в поисковый запрос, например, Москва (но помним про «синонимы», как минимум английский вариант).

  • Добавить префикс в название сайта, в нашем случае будет ru.linkedin.com

Смотрим, что получается.

Молчишь? Вижу восторг в глазах) и много выдачи разгрести надо) Но какой!

Что еще возможно для нас?!


А еще много чего. Например:

intitle: — нужен, чтобы искать только в заголовках (например, название позиции «python developer»). Тут распространяется то же правило, если нам нужна точная фраза, ставим ее в кавычки. Будет выглядеть так intitle:"python developer"

filetype: — нужен, чтобы искать по файлам определенного формата (большей частью резюме формируют в.pdf формате, но в.doc,.docx тоже можно найти много интересного).

inanchor: — текущая локация, которую кандидат указал в профиле linkedin (это то, что прописывается в шапке профиля).


Я очень рекомендую формировать стратегию поиска на старте. Найти все «синонимы» ко всем необходимым ключевикам, ресурсы, какие хотим охватить, какие‑то дополнительные важные технологии. Зафиксировать все это в табличке и учитывать при поиске. Так мы сможем отследить, что мы уже искали, а что еще нет.

Очень важно помнить о некоторых правилах:

  • Поисковая выдача в Google ограничена, то что больше 300, будет не релевантно. Нужно так формировать запрос, чтобы выдача была меньше 300.

  • Синонимы не обязательно прописывать сразу в одном запросе. Продвинутые сорсеры наоборот так делать не любят. Для того, чтобы учесть все «синонимы» есть итерационный поиск, это когда поискав одно ключевое слово, в следующую итерацию мы его исключаем, добавляя новое (пример: «Разработчик ‑developer ‑"software engineer") AND (Tornado OR Sanic OR Vibora OR Quart OR FastAPI OR asyncio) AND python» — мы поискали отдельно «developer» и «software engineer» и теперь ищем только «Разработчик», а остальные варианты мы исключили).

  • Мы всегда можем корректировать поисковую выдачу до тех пор, пока она не будет нас устраивать.

Это малая часть того, что можно узнать о сорсинге. Но фундаментальная. Не поняв это, сложно будет пойти дальше.

Но дальше будет сильно интереснее)


P. S.: хочу поделиться некоторыми тулзами, которые сильно облегчают ежедневную работу:

BOOL: Boolean Search Assistant конструктор запросов

Multi Highlight хайлайтер ключевых слов на странице

Сфера сорсинга настолько обширна, что невозможно ее всю уложить ни в одну статью. Важно не останавливаться на изученном, а идти дальше. Я искренне надеюсь, что помогла разобраться с базовыми вещами булевых запросов. Если остались вопросы — задавайте, не стесняйтесь!

Комментарии (10)


  1. habrbanket
    00.00.0000 00:00

    В заголовке ошибка. Boolean.


    1. lev
      00.00.0000 00:00
      +4

      Решено было не допустить ни одной ошибки. Держали двадцать корректур. И все равно на титульном листе было напечатано: «Британская энциклопудия»


  1. Hungryee
    00.00.0000 00:00

    Иногда кажется, что некоторые авторы живут в совершенно иной, уникальной вселенной

    В которой торнадо самый популярный веб-фреймворк и статьи не проверяют перед публикацией


    1. dinaveprikova Автор
      00.00.0000 00:00

      соглашусь, слишком категорично назвала его самым распространенным, но безусловно один из. в тексте поправила. все же хочу обратить внимание, что статья для начинающих рекрутеров, и тут важно дать точку, откуда идти. спасибо, что даете возможность увидеть ошибки и стать лучше)


  1. dinaveprikova Автор
    00.00.0000 00:00

    Спасибо, что обратили внимание на опечатку, исправила.


  1. IsKaropki
    00.00.0000 00:00

    "Bollean" - исправьте.


  1. lazy_val
    00.00.0000 00:00

    Наверное все таки Boolean и x-ray


  1. ChiefEye
    00.00.0000 00:00

    Отличный пост


  1. s_f1
    00.00.0000 00:00

    Вчера Bollean, сегодня Bolean.
    Зачем себя мучить? Почему бы просто не писать по-русски?


  1. OlgaOV
    00.00.0000 00:00

    Отличная статья, спасибо большое, очень помогла в понимании построения запросов.)