PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wykonać zapytanie SQL dla słów z interpunkcją w Postgresql?

wektor

Użyj tsvector typ, który jest częścią funkcji wyszukiwania tekstu PostgreSQL.

postgres> select 'What are Q-type Operations?'::tsvector;
              tsvector               
-------------------------------------
 'Operations?' 'Q-type' 'What' 'are'
(1 row)

Możesz również użyć znajomych operatorów na wektorach tsvector:

postgres> select 'What are Q-type Operations?'::tsvector
postgres>        || 'A.B.C''s of Coding'::tsvector;
                           ?column?                           
--------------------------------------------------------------
 'A.B.C''s' 'Coding' 'Operations?' 'Q-type' 'What' 'are' 'of'

Z dokumentacji tsvector:

Jeśli chcesz również wykonać normalizację specyficzną dla języka, na przykład usunąć popularne słowa ('the', 'a', itp.) i mnożenia, użyj to_tsvector funkcjonować. Przypisuje również wagi różnym słowom do wyszukiwania tekstowego:

postgres> select to_tsvector('english',
postgres> 'What are Q-type Operations? A.B.C''s of Coding');
                      to_tsvector                       
--------------------------------------------------------
 'a.b.c':7 'code':10 'oper':6 'q':4 'q-type':3 'type':5
(1 row)

Pełne wyszukiwanie tekstowe

Oczywiście robienie tego dla każdego wiersza w zapytaniu będzie kosztowne -- więc powinieneś przechowywać tsvector w oddzielnej kolumnie i użyć ts_query() do jego wyszukania. Pozwala to również na utworzenie indeksu GiST w wektorze ts.

postgres> insert into text (phrase, tsvec)
postgres>   values('What are Q-type Operations?',
postgres>   to_tsvector('english', 'What are Q-type Operations?'));
INSERT 0 1

Wyszukiwanie odbywa się za pomocą tsquery i operatora @@:

postgres> select phrase from text where tsvec @@ to_tsquery('q-type');
           phrase            
-----------------------------
 What are Q-type Operations?
(1 row)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmienić ręcznie plan wykonania zapytania w postgresql?

  2. Jak zaktualizować wiele rekordów za pomocą peewee

  3. przekonwertuj dowolny ciąg daty na znacznik czasu bez strefy czasowej

  4. przekonwertować typ danych MySQL SET na Postgres

  5. Instalacja Odoo na komputerze Mac nie może wykonać polecenia LESSC