...
Простой поиск ищет по всем полям, расширенный — по конкретному. Поиск Но любой поиск ищет только по полному совпадению (по частичному - — нет). При пустом вводе поиск вернёт полный список базы данных..
Info | ||
---|---|---|
| ||
Расширенный поиск нужен для работы через 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 Иванов Иван Иванович |
Перечисления
Поиск по вхождению значения в множество значений (перечисление) выполняется с помощью выражения 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] |
...