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!