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

Пълнотекстово търсене на PostgreSQL и объркване на триграма

Те служат за много различни цели.

  • Пълнотекстово търсене се използва за връщане на документи, които съответстват на заявка за търсене на основни думи.
  • Триграмите ви дават метод за сравняване на два низа и определяне колко сходни изглеждат.

Помислете за следните примери:

SELECT 'cat' % 'cats'; --true

Горното връща истина, защото 'cat' е доста подобен на 'cats' (както е продиктувано от ограничението pg_trgm).

SELECT 'there is a cat with a dog' % 'cats'; --false

Горното връща false защото % търси подобно между двата цели низа, а не търси думата cats в рамките на низа.

SELECT to_tsvector('there is a cat with a dog') @@ to_tsquery('cats'); --true

Това връща true тъй като tsvector трансформира низа в списък с основополагащи думи и игнорира куп често срещани думи (стоп думи - като 'is' &'a')... след това потърси версията на cats .

Изглежда, че искате да използвате триграми за автоматична корекция вашата ts_query но това всъщност не е възможно (все пак не по никакъв ефективен начин). Те наистина не знаят една дума е написана неправилно, колко подобна може да е на друга дума. Те могат да се използва за търсене в таблица с думи, за да се опитате да намерите подобни думи, което ви позволява да внедрите функция за тип „имахте ли предвид...“, но тази дума изисква поддържане на отделна таблица, съдържаща всички думи, използвани във вашето search поле.

Ако имате някои често неправилно изписвани думи/фрази, с които искате текстовият индекс да съвпада, може да искате да разгледате Синонимните речници




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Постоянно задайте пътя на схемата на Postgresql

  2. Редовен израз в клауза LIKE на PostgreSQL

  3. Връщане на списък с часови зони, поддържани от PostgreSQL

  4. Как да изчислим разликата между две времеви марки в PostgreSQL

  5. Най-добрите инструменти за архивиране за PostgreSQL