Quais caracteres especiais precisam ser escapados em uma consulta solr?

Atualizar: I pensar esta pergunta tem a ver com a sintaxe do solr em geral, e não com o Chef em particular. Então, enquanto eu trabalhei com o Chef, presumo que qualquer pessoa que trabalhe com Solr também experimentará isso ...

Estou trabalhando em um aplicativo que se comunica com a API de pesquisa do servidor Chef para encontrar nós específicos.

Com base nissohttp://docs.opscode.com/essentials_search.html#special-characters, parece que vários caracteres especiais precisam ser escapados.

Nota: Estou preocupado apenas com padrões de correspondência exata,não curingas. Percebo que a razão de alguns desses personagens serem curingas.

Aqui está a lista no momento da redação deste artigo, copiada da URL acima:

+  -  &&  | |  !  ( )  { }  [ ]  ^  "  ~  *  ?  :  \

Quando tento váriosknife search comandos com esses caracteres, no entanto, vejo comportamento inconsistente.

Para os exemplos a seguir, configurei um nó marcado com+&|!(){}[]^\"~*?:\\"

Esses comandos foram executados a partir de uma caixa do Linux, em um shell bash:

$ knife search node 'tags:+&|!(){}[]^"~*?:\'
ERROR: knife search failed: invalid search query: 'tags:+&|!(){}[]^"~*?:\'

Isso se comportou como esperado, já que nada foi escapado. Agora, eu escapei de tudo com um único\ como sugerem os documentos:

$ knife search node 'tags:\+\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\'
ERROR: knife search failed: invalid search query: 'tags:\+\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\'

Estranho.

Alguém pode esclarecer isso e talvez sugerir uma consulta capaz de corresponder a essa tag?

Obviamente, é improvável que alguém tenha um atributo contendo todos esses caracteres especiais, mas eu gostaria de entender melhor como os caracteres especiais devem ser escapados.

Obrigado!

questionAnswers(2)

yourAnswerToTheQuestion