2013-08-20 13 views
5

stavo leggendo sul materialized views nella documentazione di PostgreSQL 9.3 e sono imbattuto nel seguente esempio, che è dato in riferimento a controllo ortografico una parola:spiegare l'uso di <-> in PostgreSQL

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

ho provato cercando su Google e StackOverflow, ma la punteggiatura viene filtrata e non riesco a vedere come viene riferito. Qualcuno può spiegare come e a cosa serve?

E forse un collegamento alla documentazione dove posso leggere di più sui dettagli del suo utilizzo?

+5

'SELECT * FROM pg_operator dove oprname = '<->';' – joop

risposta

4

Secondo http://www.postgresql.org/docs/9.1/static/pgtrgm.html questo operatore <-> rendimenti modificare la distanza tra le stringhe

testo < -> vero e proprio testo Restituisce la "distanza" tra gli argomenti, che è uno meno il valore di similarità().

Così tutta la query cerca le 10 parole più simile alla parola "caterpiler" in termini di edit distance

1

Questo è l'operatore per il rilevamento della distanza tra due figure geometriche (vedere documentation). Inoltre, è la "distanza" (? Levenshtein's la documentazione non afferma esplicitamente) tra le stringhe in base al this:

text <-> text Restituisce il "distanza" tra gli argomenti, che è uno meno il valore di similarità().

+0

Sono abbastanza sicuro che con le stringhe sia un edit tanza. [Ecco un esempio] (http://sqlfiddle.com/#!1/6ccc5/1438) Vale anche la pena notare che l'OP menzionava la fonte dei documenti PostgreSQL. –

+0

Questo non è un errore, è un uso valido: http://www.postgresql.org/docs/9.1/static/pgtrgm.html – lejlot

+0

Hai ragione ragazzi. Risolta la mia risposta, ma @lejlot dovrebbe ottenere la risposta accettata –

0

E 'la "distanza tra" operatore, ma è operandi solo documentati sono i tipi geometrici (punti , forme, ecc.).

Dopo alcuni esperimenti con le stringhe, sembra di tornare in funzione della levenstein distance:

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