Pembaruan: Saya berpikir pertanyaan ini ada hubungannya dengan sintaks solr secara umum, dan bukan Chef pada khususnya. Jadi ketika saya mengalami hal ini saat bekerja dengan Chef, saya berasumsi bahwa siapa pun yang bekerja dengan Solr juga akan mengalami hal ini...
Saya sedang mengerjakan aplikasi yang berkomunikasi dengan API pencarian server Chef untuk menemukan node tertentu.
Berdasarkan http://docs.opscode.com/essentials_search.html#special-characters ini, sepertinya sejumlah karakter khusus perlu di-escape.
Catatan: Saya hanya peduli dengan pola pencocokan tepat, bukan karakter pengganti. Saya menyadari bahwa alasan beberapa karakter ini adalah wildcard.
Berikut daftarnya pada saat artikel ini ditulis, seperti yang disalin dari URL di atas:
+ - && | | ! ( ) { } [ ] ^ " ~ * ? : \
Namun, ketika saya mencoba berbagai perintah knife search
dengan karakter ini, saya melihat perilaku yang tidak konsisten.
Untuk contoh berikut, saya menyiapkan node yang diberi tag +&|!(){}[]^\"~*?:\\"
Perintah ini dijalankan dari kotak Linux, di bash shell:
$ knife search node 'tags:+&|!(){}[]^"~*?:\'
ERROR: knife search failed: invalid search query: 'tags:+&|!(){}[]^"~*?:\'
Itu berjalan seperti yang diharapkan, karena tidak ada yang lolos. Sekarang, saya menghindari semuanya dengan satu \
seperti yang disarankan dokumen:
$ knife search node 'tags:\+\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\'
ERROR: knife search failed: invalid search query: 'tags:\+\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\'
Aneh.
Adakah yang bisa menjelaskan hal ini, dan mungkin menyarankan kueri yang mampu mencocokkan tag tersebut?
Jelas tidak mungkin ada orang yang memiliki atribut yang berisi semua karakter khusus tersebut, tetapi saya ingin memahami lebih baik bagaimana karakter khusus harus di-escape.
Terima kasih!
! ( ) { } [ ] ^ " ~ * ? : \
Semuanya berhasil untuk saya tetapi+ - && | |
semuanya gagal - person Display Name is missing   schedule 21.02.2014&&
dan||
dianggap karakter khusus. - person hairyhenderson   schedule 21.02.2014