Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Простой поиск ищет по всем полям, расширенный — по конкретному. Но любой поиск ищет только по полному совпадению (по частичному — нет). 

Info
titleПояснялка для студентов

Расширенный поиск нужен для работы через API. Системы, которые интегрируются с Folks, работают только с методом search, который фактически является строкой поиска. Делать 100500 разных методов и учить интеграцию "а вот по 5 полям можно использовать метод фильтрации, а по остальным 50 расширенный поиск" смысла нет. Поэтому через интеграцию ищут простым или расширенным поиском, все. Или "поищи везде", или "по конкретным полям". 

Но пользователь через поисковую строку может также ввести запрос в виде расширенного поиска и получить результат. Потому что для фильтрации доступно 5 колонок, а в реальных системах их будет 50 в каждой таблице. Поиск по каждой делать смысла нет из-за ложно-положительных срабатываний. Поэтому используется расширенный


Описание

Расширенный поисковый запрос всегда должен начинаться с вопросительного знака: 

Code Block
? Folk.name = Иван

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

Поиск возможен по следующим полям и атрибутам:

Child pages (Children Display)

Синтаксис

Равенство

Чтобы обозначить равенство, можно использовать символ =.

...

Контрагенты, родившиеся 18.03.1975:

Code Block
? Folk.birthdatebirthDate = 18.03.1975

Пробел интерпретируется как разделитель, составные значения нужно передавать в кавычках:

Code Block
? Folk.patronymic = "Бахтырай Оглы"
Неточный поиск

Можно В расширенном поиске можно искать по части слова, используя символ *, который означает "любое количество любых символов"

...

Контрагенты с датой рождения, содержащей цифры 03

Code Block
? Folk.birthdatebirthDate = *03*

Пробел экранируем через слеш

...

Code Block
? Folk.company = *часовой пояс Омск*

Нельзя нельзя → пробел означает, что поиск по данной сущности закончен и дальше или новый запрос, или простой поиск, не расширенныйтут несколько поисков, которые объединяются как AND. То есть мы получили три условия поиска:

...

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

...

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

Например, Ивановых, родившихся 18.03.1975, можно найти таким запросом:

Code Block
? Folk.surname = Иванов and Folk.birthdatebirthDate = 18.03.1975

Чтобы выполнялось хотя бы одно условие поиска, необходимо использовать использовать выражение OR (ИЛИ).

...

Поэтому можно совместить — сначала все условия по атрибутам, потом пробел и ФИО одной строкой

Code Block
 ? PhoneDevice.aggregateNumbermodel = 4953332243iPad Иванов Иван Иванович

...


Перечисления

Поиск по вхождению значения в множество значений (перечисление) выполняется с помощью выражения OR (ИЛИ).

...

Например, для поиска всех контрагентов старше младше 20 лет (предположим, системная дата 01.01.2013):

Code Block
? Folk.birthdatebirthDate > 01.01.1993

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

Code Block
? Folk.birthdatebirthDate >= 15.01.2013 and Folk.birthdatebirthDate < 16.01.2013

Условие на диапазон также можно указать с помощью интервала:

Code Block
? Folk.birthdatebirthDate : [18.03.1975, 18.03.1995]

...