15

I was reading through the Postgres documentation on materialized views and in one example they use the following:

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

I tried to run a similar query on my own database, but I get an error.

[42883] ERROR: operator does not exist: character varying <-> unknown

I (probably) don't need to use the operator, but I'm just curious what it does.

Notes:

  • I am running the same version as the docs (9.3)
  • I did try Googling the question, but Google just ignores the <-> even if you wrap it in quotes.
Villiers Strauss
  • 627
  • 2
  • 6
  • 9

1 Answers1

18

It's supposed to be the "distance" operator from the additional module pg_trgm.

The manual:

text <-> textreal Returns the "distance" between the arguments, that is one minus the similarity() value.

The module has to be installed (once per database) with:

CREATE EXTENSION pg_trgm;

More details:

Theoretically, any user with the necessary privileges could create an operator with that operator name using CREATE OPERATOR - but not in the example you link to.

Erwin Brandstetter
  • 185,527
  • 28
  • 463
  • 633