Понимание приоритета операторов запросов в EloView 4
Наш движок запросов следует стандартным правилам приоритета операторов при обработке условий. Операторы всегда оцениваются в следующем порядке:
- Скобки
- NOT
- AND
- OR
Это означает, что когда запрос содержит как AND, так и OR без скобок, система всегда будет оценивать все AND условия перед применением любых OR условий.
Пример: Как приоритет операторов влияет на ваш запрос
Исходный запрос
name:"POS" and name:"Y052016" or name:"Y052051" or name:"Y300084" or name:"Y351040"Как это интерпретирует движок
Поскольку AND оценивается перед OR, запрос рассматривается как:
(name:"POS" and name:"Y052016") or name:"Y052051" or name:"Y300084" or name:"Y351040"Результат
Это вернет:
- Элементы, содержащие как POS, так и Y052016, или
- Любые элементы, соответствующие Y052051, Y300084 или Y351040 — даже если они не содержат POS.
Как получить желаемые результаты
Если ваша цель состоит в том, чтобы требовать POS для всех Y-значений, вы должны использовать скобки для группировки ваших OR условий:
name:"POS" and (name:"Y052016" or name:"Y052051" or name:"Y300084" or name:"Y351040")Это гарантирует, что POS применяется ко всем группированным Y-значениям.
Дополнительный пример
Исходный запрос
name:"pos" AND name:"store1" OR name:"store2" OR name:"store3" AND name:"KDS"Интерпретировано системой
(name:"pos" AND name:"store1") OR name:"store2" OR (name:"store3" AND name:"KDS")Эта логика может привести к неожиданным результатам, потому что условия OR не сгруппированы должным образом.
Желаемое поведение
Если вы хотите найти результаты, которые:
- Содержат POS в имени
- Включают одно из следующих: Store1, Store2 или Store3
- Также содержат KDS
Вы должны написать запрос следующим образом:
name:"pos" AND (name:"store1" OR name:"store2" OR name:"store3") AND name:"KDS"Лучшие практики
При комбинировании AND и OR:
- Всегда используйте скобки для группировки ваших условий.
- Это гарантирует, что ваша логика будет ясна и предотвратит неожиданные результаты.
- ⚠️ Некоторые существующие фильтры могут не работать под новой логикой и понадобятся для их воссоздания.
Явно группируя термины, ваши запросы будут вести себя последовательно и каждый раз возвращать точные результаты.
Please report any broken links by emailing support@elotouch.com and include a link to the knowledge article