Które znaki należy unikać, aby upewnić się, że: PSQLException: ERROR: błąd składniowy w tsquery nie wystąpi? Dokumentacja nie mówi nic o tym, jak uciec wyszukiwany ciąg: http://www.postgresql.org/docs/8.3/static/datatype-textsearch.htmlWyjątek PSQLException: BŁĄD: błąd składni w pukrzeniu
Odpowiedz
Stosować cudzysłowie swoich kategoriach, jeśli chcesz je jako zwroty/verbatim lub zawierają znaki użyte w składni:
select to_tsquery('"hello there" | hi');
Bare pamiętaj, że nie powinieneś mieć szalonych postaci w swoich kategoriach, ponieważ nie będą one pasować do niczego w tsvector.
odnośnej (token) znaków rozpoznawanych przez parser tsquery są: \0
(zerowy) (
, )
,
(spacje), |
, &
, :
, *
i !
. Ale w jaki sposób tokenize twoje zapytanie powinno być oparte na tym, jak skonfigurować słownik. Istnieje wiele innych znaków, których prawdopodobnie nie chcesz w zapytaniu, nie dlatego, że powodują błąd składni, ale dlatego, że oznacza to, że nie jest tokenizacja zapytania poprawnie.
Użyj wersji plainto_tsquery
, jeśli jest to prosta kwerenda AND
i nie chcesz zajmować się ręcznym tworzeniem zapytania.
Zdefiniuj "szalone postacie", wtedy moje pytanie brzmi :-) – ideaboxer
(moim głównym celem jest uniknięcie wystąpienia PSQLException tylko dlatego, że ktoś wprowadził szalone postacie) – ideaboxer
Dowolny znak, który nie pojawia się w twoim słowniku. Dla angielskiego słownika powiedziałbym: '[^ A-Za-z0-9] == crazy'. –
czyli gdzie jest zapytanie? –
Istnieje wiele zapytań. W rzeczywistości są one tajne i nie potrzebuję więcej niż odpowiedzi na moje pytanie: Jak poprawnie uciec ciąg kwerendy? – ideaboxer