Обновление: Я думаю, что этот вопрос связан с синтаксисом 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:\+\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\'
Странно.
Может ли кто-нибудь пролить свет на это и, возможно, предложить запрос, способный сопоставить этот тег?
Очевидно, маловероятно, что у кого-нибудь будет атрибут, содержащий все эти специальные символы, но я хотел бы лучше понять, как экранировать специальные символы.
Спасибо!