Des caractères spéciaux besoin de s'échapper dans un solr requête?

Mise à jour: je pense cette question a à voir avec solr syntaxe en général, et non pas le Chef en particulier. Ainsi, alors que j'ai couru dans ce travail avec le Chef, je présume que toute personne travaillant avec Solr sera également l'expérience de cette...


Je travaille sur une application qui communique avec le Chef de serveur de l'API de recherche pour trouver des noeuds particuliers.

Sur cette base http://docs.opscode.com/essentials_search.html#special-characters, il semble qu'un certain nombre de caractères spéciaux doivent être échappés.

Remarque: je suis le seul souci exact-les modèles de correspondance, pas des caractères génériques. Je me rends compte que la raison pour laquelle certains de ces caractères sont des caractères génériques.

Voici la liste au moment de cette écriture, comme copié à partir de l'URL ci-dessus:

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

Quand j'ai essayer divers knife search commandes avec ces personnages, mais je vois que les comportements incohérents.

Pour les exemples suivants, j'ai mis en place un nœud qui est étiqueté avec +&|!(){}[]^\"~*?:\\"

Ces commandes sont exécutées à partir d'une machine sous Linux, dans un shell bash:

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

Qui se comportent comme prévu, puisque rien n'a été échappé. Maintenant, j'ai échappé à tout avec un seul \ que les docs suggèrent:

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

Étrange.

Quelqu'un peut jeter quelque lumière sur ce point, et peut-être suggérer une requête qui est capable de répondre à ce tag?

Il est évidemment peu probable que quiconque pourra jamais avoir un attribut contenant tous ces caractères spéciaux, mais j'aimerais mieux comprendre comment les caractères spéciaux doivent être échappés.

Merci!

  • Peut-être que vous trouverez davantage d'informations lors de la recherche de la même chose mais pour solr au lieu de chef..? C'est ce utilisé pour la recherche.
  • ! ( ) { } [ ] ^ " ~ * ? : \ Ceux qui travaillent tous pour moi mais + - && | | d'échec
  • merci. Que partiellement aide. Je suis aussi un peu confus pourquoi && et || sont considérés comme des caractères spéciaux.
  • Après la lecture de l'URL posté par @sethvargo ci-dessous, je comprends maintenant pourquoi +, -, && et || sont interprétés d'une façon spéciale. Ils sont considérés comme des opérateurs booléens. Cependant il n'est pas encore clair comment échapper à ces difficultés.