2013-04-15 26 views
9

PSQLException: ERROR: tsquery'da sözdizimi hatası oluşmayacağından emin olmak için hangi karakterlerden kaçınılmalıdır?PSQLException: ERROR: tsquery içinde sözdizimi hatası

select to_tsquery('"hello there" | hi'); 

Çıplak: ibareleri/kelimesi kelimesine ya da sözdizimi kullanılan karakterler içeren olarak, isterseniz Terimlerinizin etrafında http://www.postgresql.org/docs/8.3/static/datatype-textsearch.html

+0

Yani, quer nerede? –

+0

Çok sayıda sorgu var. Aslında onlar gizlidir ve benim soruma bir cevaptan daha fazlasına ihtiyacım yok: Sorgu dizgisinden nasıl düzgün bir şekilde kaçınılır? – ideaboxer

cevap

18

Kullanım tırnak: dokümantasyon arama dizesi kaçmayı nasıl hakkında bir şey söylemez tsvector'da hiçbir şeyle uyuşmayacaklarından dolayı, gerçekten çılgın karakterler kullanmamalısınız. tsquery çözümleyici tarafından tanınan

(non-belirteç) karakterlerdir: \0 (boş), (, ), (boşluk), |, &, :, * ve !. Ancak sorgunuzu nasıl belirlediğiniz, sözlüğünüzü nasıl kurduğunuza bağlı olmalıdır. Sorgunuzda büyük olasılıkla istemediğiniz pek çok başka karakter var, çünkü bir sözdizimi hatası verecekler, ancak bu, sorgunuzu doğru bir şekilde belirlemedığınız anlamına geliyor.

AND sorgusu plainto_tsquery sürümünü kullanın ve sorguyu el ile oluşturmaya çalışmak istemezsiniz.

+0

Lütfen "çılgın karakterleri" tanımlayın, sonra soruma yanıtım :-) – ideaboxer

+0

(birincil hedefim, birisinin çılgın karakterler girmesi nedeniyle herhangi bir PSQLException oluşumunu engellemektir) – ideaboxer

+1

Sözlüğünüzde görünmeyen herhangi bir karakter. Bir ingilizce sözlük için şunu söyleyebilirim: '[^ A-Za-z0-9] == crazy'. –