aboutsummaryrefslogtreecommitdiff
path: root/contrib/fuzzystrmatch/README.fuzzystrmatch
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/fuzzystrmatch/README.fuzzystrmatch')
-rw-r--r--contrib/fuzzystrmatch/README.fuzzystrmatch121
1 files changed, 121 insertions, 0 deletions
diff --git a/contrib/fuzzystrmatch/README.fuzzystrmatch b/contrib/fuzzystrmatch/README.fuzzystrmatch
new file mode 100644
index 00000000000..9109ea7e06e
--- /dev/null
+++ b/contrib/fuzzystrmatch/README.fuzzystrmatch
@@ -0,0 +1,121 @@
+/*
+ * fuzzystrmatch.c
+ *
+ * Functions for "fuzzy" comparison of strings
+ *
+ * Copyright (c) Joseph Conway <joseph.conway@home.com>, 2001;
+ *
+ * levenshtein()
+ * -------------
+ * Written based on a description of the algorithm by Michael Gilleland
+ * found at http://www.merriampark.com/ld.htm
+ * Also looked at levenshtein.c in the PHP 4.0.6 distribution for
+ * inspiration.
+ *
+ * metaphone()
+ * -----------
+ * Modified for PostgreSQL by Joe Conway.
+ * Based on CPAN's "Text-Metaphone-1.96" by Michael G Schwern <schwern@pobox.com>
+ * Code slightly modified for use as PostgreSQL function (palloc, elog, etc).
+ * Metaphone was originally created by Lawrence Philips and presented in article
+ * in "Computer Language" December 1990 issue.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose, without fee, and without a written agreement
+ * is hereby granted, provided that the above copyright notice and this
+ * paragraph and the following two paragraphs appear in all copies.
+ *
+ * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
+ * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
+ * DOCUMENTATION, EVEN IF THE AUTHOR OR DISTRIBUTORS HAVE BEEN ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE AUTHOR AND DISTRIBUTORS HAS NO OBLIGATIONS TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ */
+
+
+Version 0.1 (3 August, 2001):
+ Functions to calculate the degree to which two strings match in a "fuzzy" way
+ Tested under Linux (Red Hat 6.2 and 7.0) and PostgreSQL 7.2devel
+
+Release Notes:
+
+ Version 0.1
+ - initial release
+
+Installation:
+ Place these files in a directory called 'fuzzystrmatch' under 'contrib' in the PostgreSQL source tree. Then run:
+
+ make
+ make install
+
+ You can use fuzzystrmatch.sql to create the functions in your database of choice, e.g.
+
+ psql -U postgres template1 < fuzzystrmatch.sql
+
+ installs following functions into database template1:
+
+ levenshtein() - calculates the levenshtein distance between two strings
+ metaphone() - calculates the metaphone code of an input string
+
+Documentation
+==================================================================
+Name
+
+levenshtein -- calculates the levenshtein distance between two strings
+
+Synopsis
+
+levenshtein(text source, text target)
+
+Inputs
+
+ source
+ any text string, 255 characters max, NOT NULL
+
+ target
+ any text string, 255 characters max, NOT NULL
+
+Outputs
+
+ Returns int
+
+Example usage
+
+ select levenshtein('GUMBO','GAMBOL');
+
+==================================================================
+Name
+
+metaphone -- calculates the metaphone code of an input string
+
+Synopsis
+
+metaphone(text source, int max_output_length)
+
+Inputs
+
+ source
+ any text string, 255 characters max, NOT NULL
+
+ max_output_length
+ maximum length of the output metaphone code; if longer, the output
+ is truncated to this length
+
+Outputs
+
+ Returns text
+
+Example usage
+
+ select metaphone('GUMBO',4);
+
+==================================================================
+-- Joe Conway
+