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

Jak stworzyć proste wyszukiwanie rozmyte tylko za pomocą PostgreSQL?

Postgres udostępnia moduł z kilkoma funkcjami porównywania strun, takimi jak soundex i metafon. Ale będziesz chciał użyć funkcji edycji odległości levenshtein.

Example:

test=# SELECT levenshtein('GUMBO', 'GAMBOL');
 levenshtein
-------------
           2
(1 row)

2 to odległość edycji między dwoma słowami. Kiedy zastosujesz to do kilku słów i posortujesz według wyniku odległości edycji, uzyskasz typ rozmytych dopasowań, których szukasz.

Wypróbuj ten przykład zapytania:(oczywiście z własnymi nazwami obiektów i danymi)

SELECT * 
FROM some_table
WHERE levenshtein(code, 'AB123-lHdfj') <= 3
ORDER BY levenshtein(code, 'AB123-lHdfj')
LIMIT 10

To zapytanie mówi:

Podaj mi 10 najlepszych wyników wszystkich danych z some_table, w których odległość edycji między wartością kodu a wejściem 'AB123-lHdfj' jest mniejsza niż 3. Otrzymasz wszystkie wiersze, w których wartość kodu mieści się w zakresie 3 znaków różnicy do ' AB123-lHdfj'...

Uwaga:jeśli pojawi się błąd taki jak:

function levenshtein(character varying, unknown) does not exist

Zainstaluj fuzzystrmatch rozszerzenie za pomocą:

test=# CREATE EXTENSION fuzzystrmatch;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CS50:operator LIKE, podstawianie zmiennych z rozszerzeniem %

  2. Jak rozumieć ANALIZĘ WYJAŚNIJ

  3. PostgreSQL konwertuje kolumny na wiersze? Transponować?

  4. java.lang.NoSuchFieldError:BRAK w trybie hibernacji przy użyciu Spring 3, maven, JPA, c3p0

  5. Tworzenie PostgreSQL dla Windows, część 3