あいまい検索
postgresql-contribのfuzzystrmatchを使う。
pathはDebianの場合。
$ psql dbname # \i /usr/share/postgresql/contrib/fuzzystrmatch.sql
これで完了。
# select levenshtein('あいうえお', 'あいうえあ'); levenshtein ------------- 1 (1 row) dorothy=# select levenshtein('あいうえお', 'あいうえん'); levenshtein ------------- 2 (1 row) # select levenshtein('あいうえ', 'あいうえお'); levenshtein ------------- 3 (1 row)
日本語でUTF-8を使っていると1〜3の間でぶれる。
# select levenshtein('あいうえお', 'がぎぐげご'); levenshtein ------------- 5 (1 row) # select levenshtein('あいうえお', 'パピプペポ'); levenshtein ------------- 10 (1 row)
なんかうまい方法は無いだろうか。