web-dev-qa-db-ja.com

Solrクエリでエスケープする必要がある特殊文字はどれですか?

更新:Ithinkこの質問は、特にChefではなくsolr構文に関係している。ですから、このChefでの作業に出くわしましたが、Solrで作業している人は誰でもこれを経験すると思います...


Chefサーバーの検索APIと通信して特定のノードを見つけるアプリケーションで作業しています。

これに基づいて http://docs.opscode.com/essentials_search.html#special-characters で、多くの特殊文字をエスケープする必要があるようです。

注:完全一致パターンのみに関心があります。notワイルドカード。これらの文字の一部がワイルドカードである理由を理解しています。

上記のURLからコピーした、この記事の執筆時点のリストを以下に示します。

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

ただし、これらの文字を使用してさまざまな_knife search_コマンドを実行すると、一貫性のない動作が見られます。

次の例では、+&|!(){}[]^\"~*?:\\"でタグ付けされたノードをセットアップします

これらのコマンドは、bashシェルのLinuxボックスから実行されました:

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

何もエスケープされなかったので、それは期待どおりに動作しました。今、私はドキュメントが示唆するように、単一の_\_ですべてをエスケープします:

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

奇妙な。

誰かがこれに少し光を当てることができ、そのタグに一致するクエリを提案することができますか?

誰もがこれらのすべての特殊文字を含む属性を持つことは決してありそうにありませんが、特殊文字をどのようにエスケープするかをよりよく理解したいと思います。

ありがとう!

21
hairyhenderson
14
sethvargo
6