Интересно, есть ли доступная грамматика, которая сможет анализировать строки запроса, отправленные в Elastic Search query_string API ?
Ссылка здесь: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax
Я бы предпочел EBNF. В настоящее время я использую Python на всякий случай.
Whoosh (https://whoosh.readthedocs.io/en/latest/index.html) - это поиск на чистом Python с парсером запросов Lucene, который можно повторно использовать в собственном приложении. Я думаю, что он использовал пример парсера Lucene в pyparsing (https://github.com/pyparsing/pyparsing/blob/master/examples/lucene_grammar.py)
Вы можете найти грамматику EBNF синтаксического анализатора запросов строки Lucene здесь: https://github.com/apache/lucene-solr/blob/master/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj
Соответствующие шаги сборки здесь: https://github.com/apache/lucene-solr/blob/1d85cd783863f75cea133fb9c452302214165a4d/lucene/queryparser/build.xml#L63-L79