Как я могу использовать язык выражений для определения интерфейса API?

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

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

Прямо сейчас я определил свои поисковые конструкции, как показано ниже:

SearchExpression: {
    Criteria c;
}

Criteria: {
    SimpleCriteria sc;  // is-a Criteria
    ComplexCriteria cc; // is-a Criteria
}

SimpleCriteria: {
    Field f;
    ConditionalOperator cop;
    Value v;
    double weightage; // Search API will have it's own way of computing score of matching result, 
                      // which may not suite to some of the clients. In such scenario, clients 
                      // can specify weightage for each criteria.
}

ComplexCriteria: {
    Criteria c1;
    LogicalOperator lop;
    Criteria c2;
}


ConditionalOperator: {
    EQL;
    NOT_EQL;
    IN;
    NOT_IN;
    MATCH;
    CONTAIN;
}

Field: {
    TYPE_1;
    TYPE_2;
}

Value: {
    String stringValue;
    Double doubleValue;
}

Мои первоначальные исследования (поиск в Google) говорят мне, что мы можем определить грамматику запроса и проанализировать ее с помощью таких инструментов распознавания языков, как ANTLR4. Но для этого необходимо написать наш собственный уровень транслятора для преобразования дерева синтаксического анализа в объекты домена / бизнеса.

Я хотел знать, можем ли мы использовать любую стандартную библиотеку выражений для определения вышеуказанных конструкций в интерфейсе API.

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

0 ответов

Другие вопросы по тегам