2013-08-20 13 views
5

czytałem się na materialized views w dokumentacji PostgreSQL 9.3 i natknąłem się na poniższym przykładzie, który jest podany w odniesieniu do sprawdzania pisowni słowa:Wyjaśnić wykorzystanie <-> w PostgreSQL

SELECT word FROM words ORDER BY word <-> 'caterpiler' LIMIT 10; 

próbowałam przeszukując Google i StackOverflow, ale interpunkcja zostaje odfiltrowana i nie widzę, aby wymyślić, do czego się odnosi. Czy ktoś może wyjaśnić, w jaki sposób i do czego jest stosowany?

A może link do dokumentacji, gdzie mogę przeczytać więcej na temat szczegółów jej użycia?

+5

'WYBIERZ * Z pg_operator gdzie oprname = '<->';' – joop

Odpowiedz

4

Według http://www.postgresql.org/docs/9.1/static/pgtrgm.html operator <-> wraca edit odległość między strunami

tekstowych < -> tekst prawdziwy Zwraca "odległość" między argumentami, że jest jeden minus wartość podobieństwa().

Więc cała kwerenda wygląda na 10 najbardziej podobne słowa do słowa „caterpiler” pod względem edycyjnym odległości

1

To operator znajdujący odległość między dwiema figurami geometrycznymi (patrz: documentation). Ponadto, jest to „odległość” (? Levenshtein's dokumentacja nie wskazuje to wyraźnie) między strunami według this:

text <-> text Zwraca „odległość” między argumentami, że jest jeden minus wartość podobieństwa().

+0

Jestem całkiem pewny, że ciągi są zmienione dis Tolerancja [Oto przykład] (http://sqlfiddle.com/#!1/6ccc5/1438) Warto również zauważyć, że OP wspomniał, że źródłem były dokumenty PostgreSQL. –

+0

To nie jest błąd, jest to poprawne użycie: http://www.postgresql.org/docs/9.1/static/pgtrgm.html – lejlot

+0

Masz rację. Naprawiono moją odpowiedź, ale @lejlot powinien otrzymać akceptowaną odpowiedź –

0

To „rozstaw” operatora, ale to tylko udokumentowane argumenty są typy geometryczne (punkty , kształty itp.).

Po kilku eksperymentach z łańcuchów, wydaje się, aby powrócić do funkcji levenstein distance:

  • 'abc' <-> 'abc' -> 0
  • 'abc' <-> 'abcd' -> 0,5
  • 'abc' <-> 'abd' -> 0,6666