PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да направя SQL заявка за думи с препинателни знаци в Postgresql?

tvector

Използвайте tsvector тип, който е част от функцията за търсене на текст на PostgreSQL.

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

Можете също така да използвате познати оператори на tsvectors:

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'

От документацията на tsvector:

Ако също така искате да направите нормализация за специфичен език, като премахване на общи думи („the“, „a“ и т.н.) и умножения, използвайте to_tsvector функция. Той също така присвоява тежести на различни думи за търсене на текст:

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)

Пълноценно текстово търсене

Очевидно правенето на това за всеки ред в заявка ще бъде скъпо -- така че трябва да съхранявате tsvector в отделна колона и да използвате ts_query(), за да го търсите. Това също ви позволява да създадете GiST индекс на tsvector.

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

Търсенето се извършва с помощта на tsquery и оператора @@:

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. Подредете коментарите по пътя на нишката и по общия брой гласове

  2. Оптимизирайте заявката с OFFSET върху голяма таблица

  3. Как да променя позицията на колона в таблица с база данни на PostgreSQL?

  4. PG::ConnectionBad:fe_sendauth:не е предоставена парола

  5. низ срещу текст с помощта на Rails 3.2.* и Postgres - трябва ли винаги да използвам само текст