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

Wyszukiwanie pełnotekstowe w PostgreSQL i zamieszanie z trygramami

Służą bardzo różnym celom.

  • Wyszukiwanie pełnotekstowe służy do zwracania dokumentów, które pasują do zapytania wyszukiwania zawierającego słowa kluczowe.
  • Trygramy dają metodę porównywania dwóch ciągów i określania, jak wyglądają podobnie.

Rozważ następujące przykłady:

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

Powyższe zwraca prawdę, ponieważ 'cat' jest bardzo podobny do 'cats' (zgodnie z limitem pg_trgm).

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

Powyższe zwraca false ponieważ % szuka podobnie między dwoma całymi ciągami, nie szuka słowa cats w ciąg.

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

Zwraca to true ponieważ tsvector przekształcił łańcuch w listę słów tematycznych i zignorował kilka popularnych słów (słowa stop - jak 'is' i 'a')... a następnie wyszukał wersję cats z tematem głównym .

Wygląda na to, że chcesz używać trygramów do autokorekty Twoje ts_query ale tak naprawdę nie jest to możliwe (w każdym razie nie w żaden efektywny sposób). Tak naprawdę nie wiedzą słowo jest błędnie napisane, jak podobne może być do innego słowa. mogli być używane do przeszukiwania tabeli słów w celu znalezienia podobnych słów, co pozwala na zaimplementowanie funkcji typu „czy miałeś na myśli...”, ale to słowo wymaga utrzymania oddzielnej tabeli zawierającej wszystkie słowa użyte w wyszukiwaniu search pole.

Jeśli masz często błędnie napisane słowa/frazy, które chcesz dopasować do indeksu tekstowego, możesz zajrzeć do słowników synonimów




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odmowa uprawnień podczas próby importowania pliku CSV z PGAdmin

  2. Wdrażanie i konserwacja PostgreSQL z Ansible

  3. Wielokrotne wywołanie funkcji zwracającej zestaw z argumentem tablicowym

  4. Jak zapewnić klientowi API 1 000 000 wyników z bazy danych?

  5. Jak włączyć pracę php z postgresql?