Versions Compared

Key

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

...

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

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

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

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

...

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

Code Block
? Folk.birthdatebirthDate = 18.03.1975

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

...

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

Code Block
? Folk.birthdatebirthDate = *03*

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

...

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

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

...

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

...

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

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

...

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

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


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

...

Например, для поиска всех контрагентов старше младше 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]

...