Ответ 1
Вам нужно использовать синтаксис lucene solr для регулярных выражений: http://lucene.apache.org/core/6_5_1/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#Escaping_Special_Characters
Обновление: Я думаю, что этот вопрос связан с синтаксисом solr в целом, а не с Chef в частности. Поэтому, пока я сталкивался с этим, работая с шеф-поваром, я полагаю, что любой, кто работает с Solr, также испытает это...
Я работаю над приложением, которое связывается с API поиска Chef для поиска определенных узлов.
Основываясь на этом http://docs.opscode.com/essentials_search.html#special-characters, кажется, что нужно выделить несколько специальных символов.
Примечание.. Меня интересуют только точные шаблоны, а не шаблоны. Я понимаю, что некоторые из этих символов являются подстановочными знаками.
Здесь список на момент написания этой статьи, скопированный с URL-адреса выше:
+ - && | | ! ( ) { } [ ] ^ " ~ * ? : \
Когда я пытаюсь использовать различные команды knife search
с этими символами, я вижу противоречивое поведение.
В следующих примерах я настроил node, помеченный +&|!(){}[]^\"~*?:\\"
Эти команды выполнялись из окна Linux в оболочке bash:
$ knife search node 'tags:+&|!(){}[]^"~*?:\'
ERROR: knife search failed: invalid search query: 'tags:+&|!(){}[]^"~*?:\'
Это пошло так, как ожидалось, поскольку ничего не ускользнуло. Теперь я избегаю всего с помощью одного \
, как предлагают документы:
$ knife search node 'tags:\+\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\'
ERROR: knife search failed: invalid search query: 'tags:\+\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\'
Странно.
Может ли кто-нибудь пролить свет на это и, возможно, предложить запрос, способный сопоставить этот тег?
Очевидно, маловероятно, что у кого-нибудь будет атрибут, содержащий все эти специальные символы, но я хотел бы лучше понять, как экранировать специальные символы.
Спасибо!
Вам нужно использовать синтаксис lucene solr для регулярных выражений: http://lucene.apache.org/core/6_5_1/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#Escaping_Special_Characters
Это может быть хорошей идеей, глядя на http://lucene.apache.org/solr/4_2_1/solr-solrj/org/apache/solr/client/solrj/util/ClientUtils.html#escapeQueryChars(java.lang.String)
У меня была та же проблема, и я использовал org.apache.lucene.queryparser.classic.QueryParserBase # escape