Язык запросов

Дата:

Язык запросов

Аккумулировав определенную статистику поисковых запросов пользователей, мы сделали ее анализ, и были неприятно удивлены убедившись, что 99% пользователей с трудом представляют себе как заниматься поиском. Для разрешения подобной ситуации мы публикуем статью о способах поиска информации.

В настоящее время около половины запросов пользователей приходится на запросы по номеру телефона вида 79123456789, другая половина приходится на запросы по имени абонента вида Иванов Иван Иванович Москва.

Хотя можно искать и так, но для более точного формулирования поискового запроса лучше использовать язык запросов. Знание и правильное применение языка запросов улучшает и упрощает процесс поиска информации.

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

11 способов поиска информацию на «Номер телефона онлайн», о которых не знает 99% пользователей:

Способ 1. Поиск по конкретному полю.

По умолчанию поиск производится по всем полям, но также есть возможность искать только по определенным интересующим нас полям, например для поиска абонента с фамилией, совпадающей с какой-нибудь названной в честь его, его родственника или однофамильца улицей или городом выглядит так: lastname:Киров

Основные поля доступные для поиска:
phoneНомер телефона в международном формате, без знака +
lastnameФамилия абонента
firstnameИмя абонента
middlenameОтчество абонента
country.RUНаименование страны абонента на русском языке
regionРегион
districtРайон
cityНаселенный пункт
buildingДом
apartКвартира
zipПочтовый индекс
emailАдрес электонной почты
websiteВеб-сайт
textОписание
operatorОператор связи

В запросы по полям можно добавлять списки значений с помощью операторов OR, AND, NOT например lastname:(Иванов OR Петров) будет произведен поиск абонентов содержащих Иванов или Петров.

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

Запросы по имени поля можно комбинировать, например так: lastname:Иванов firstname:(Иван Петр) city:"Нижний Новгород"

Способ 2. Поиск по спискам значений.

Для поиска по определенному полю можно использовать списки значений, например для поиска абонентов с фамилией Киров или Дзержинский, выглядит так: lastname:(Киров OR Дзержинский) или так lastname:(Киров Дзержинский)

Способ 3. Поиск по пустым полям.

_missing_:email – выведет список абонентов, у которых отсутствует адрес электронной почты.

Способ 4. Поиск по существующим полям.

_exists_:email – выведет список абонентов, у которых присутствует адрес электронной почты.

Способ 5. Поиск по заданной последовательности слов.

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

Последовательность слов может быть также использована с указанием конкретных полей поиска, например, при запросе city:"Нижний Новгород" – будет произведен поиск абонентов содержащих заданную последовательность в поле city.

Способ 6. Подстановка символов.

В запросе можно указывать символы подстановки:

  • ? – может представлять любой одиночный символ, используется для поиска абонентов, содержащих, например, родственные буквы e или ё, и или й или другие буквы. Например, при запросе lastname:Лобаш?в будет найдены абоненты с фамилией Лобашев, Лобашёв, Лобашов.
  • * - может представляет собой любое количество символов, например при запросе Иванов* будут найдены абоненты Иванов, Иванова, Ивановых.

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

Способ 7. Нечеткий поиск.

Данные об абонентах не всегда вводятся в базу данных правильно. Представьте себе ситуацию когда у человека вводившего в базу данных абонента дрогнула рука и вместо слова Иванов было записано слово Ивагов. Вы можете указать нечеткое условие поиска слова с помощью оператора ~. Например запрос lastname:Иванов~ выведет всех абонентов написанных с ошибкой в фамилии абонента.

Способ 8. Поиск по диапазонам значений.

В запросе можно также указать операторы для указания поиска по диапазону.

Включающие в себя крайние значения диапазона задаются с помощью квадратных скобок [min до max] Например при запросе building:[1 TO 10] выведет всех абонентов с номерами домов от 1 до 10. Если не нужно включать крайние значения диапазона, применяются фигурные скобки, например, запрос building:{1 TO 10} выведет абонентов с номерами домов от 2 до 9.

Для запросов неограниченных с одной стороны каким нибудь конечным значением можно применять больше-меньше запросы:

building:>>10

building:>=10

building:<10

building:<=10

Способ 9. Использование логических операторов в запросах.

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

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

Оператор предпочтения + обозначает, что это слово обязательно должно присутствовать.

Оператор исключения обозначает, что это слово обязательно не должно присутствовать.

Например, такой запрос Иванов Иван +Иванович -Иваново обозначает:

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

Также поддерживаются хорошо знакомые всем операторы AND, OR и NOT, также вместо которых можно записать &&, || и !.

Однако эффективность использования этих операторов может быть не такой очевидной как кажется на первый взгляд. NOT приоритетнее оператора AND, который в свою очередь приоритетнее OR. В то время как операторы + и оказывают влияние только на стоящее слово справа, операторы AND, OR и NOT оказывают влияние на слово слева и справа.

Способ 10. Усиление значимости.

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

Иван Иванов^2

По умолчанию этот коэффициент равен 1, но может принимать быть любое положительное число с плавающей точкой. Если установить коэффициент усиления между 0 и 1 это снизит значимость.

Коэффициенты усилиления могут также быть применены к целым фразам или группам: (Иванов Иван)^4 "Нижний Новгород"^2

Способ 11. Запросы можно группировать.

Несколько слов могут быть сгруппированы с помощью круглых скобок () и формировать вложенные подзапросы:

(Василий OR Петр) AND Иванов

Группировка также может быть использована с указанием конкретных полей поиска, или для усиления релевантности подзапроса.

firstname:(Василий OR Петр) city:(Москва Санкт-Петербург)^2