web-dev-qa-db-fra.com

Quels caractères spéciaux doivent s'échapper dans une requête solr?

Mise à jour: I pensez cette question concerne la syntaxe solr en général, et non Chef en particulier. Donc, alors que je suis tombé sur ce travail avec Chef, je suppose que toute personne travaillant avec Solr vivra également cela ...


Je travaille sur une application qui communique avec l'API de recherche du serveur Chef pour trouver des nœuds particuliers.

Sur la base de cela 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 ne suis concerné que par les modèles de correspondance exacte, pas caractères génériques. Je me rends compte que la raison pour laquelle certains de ces personnages sont des caractères génériques.

Voici la liste au moment de la rédaction de cet article, telle que copiée à partir de l'URL ci-dessus:

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

Cependant, lorsque j'essaie diverses commandes knife search Avec ces caractères, je constate un comportement incohérent.

Pour les exemples suivants, j'ai configuré un nœud balisé avec +&|!(){}[]^\"~*?:\\"

Ces commandes ont été exécutées à partir d'une boîte Linux, dans un shell bash:

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

Cela s'est comporté comme prévu, car rien ne s'est échappé. Maintenant, j'échappe à tout avec un seul \ Comme le suggèrent les docs:

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

Étrange.

Quelqu'un peut-il éclairer cela et peut-être suggérer une requête capable de correspondre à cette balise?

Il est évidemment peu probable que quiconque ait 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!

21
hairyhenderson
14
sethvargo
6
Anatoli Radoulov