Какие специальные символы нужно экранировать в запросе solr?
Обновить: I считать этот вопрос имеет отношение к синтаксису solr в целом, а не к Chef в частности. Так что, хотя я столкнулся с этой работой с Chef, я предполагаю, что любой, кто работает с Solr, также испытает это ...
Я работаю над приложением, которое связывается с API поиска сервера Chef для поиска определенных узлов.
Основываясь на этомhttp://docs.opscode.com/essentials_search.html#special-charactersПохоже, что необходимо экранировать ряд специальных символов.
Замечания: Меня интересуют только точно совпадающие шаблоны,не подстановочные знаки. Я понимаю, что причиной некоторых из этих символов являются символы подстановки.
Вот список на момент написания этой статьи, скопированный из приведенного выше URL:
+ - && | | ! ( ) { } [ ] ^ " ~ * ? : \
Когда я пробую различныеknife search
Команды с этими символами, однако, я вижу противоречивое поведение.
Для следующих примеров я настроил узел с тегом+&|!(){}[]^\"~*?:\\"
Эти команды были запущены из окна 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:\+\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\'
Странный.
Может кто-нибудь пролить свет на это, и, возможно, предложить запрос, который может соответствовать этому тегу?
Очевидно маловероятно, что кто-либо когда-либо будет иметь атрибут, содержащий все эти специальные символы, но я бы хотел лучше понять, как экранировать специальные символы.
Спасибо!