8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PostgreSQLでバイグラムの全文検索環境をインストール@Mac

Last updated at Posted at 2013-05-15

PostgreSQLには標準でpg_trgmというN-gramによる全文検索のための拡張があるのだが、これは名前の通りトリグラムであって、検索文字列が1〜2文字のときにはインデックスが効かないという漢字圏にはあまり嬉しくないものになっている。

それを何とかしたいと考えた、我らがNTTデータ様が作ってくれたのがpg_bigm
バイグラムで1〜2文字の検索にもバッチリ対応。
ただしまだ正式なPostgreSQLの拡張ではないので、自分でビルドする必要あり。

そのMacでの手順を以下に記します。

まずbrewで必要なライブラリをインストール。

Homebrewはすでにインストール済みとの前提
brew install readline ossp-uuid openssl

公式サイトからPostgreSQLの最新版ソースを落としてきてビルドする。

configureオプション長いけど、かなり試行錯誤してこれになったのでそのままコピペすべし
wget http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2
cd postgresql-9.2.4/
./configure --with-readline \
            --with-libs=/usr/local/Cellar/readline/6.2.4/lib \
            --with-libs=/usr/local/lib \
            --with-libs=/usr/local/opt/openssl/lib \
            --with-includes=/usr/local/Cellar/readline/6.2.4/include/readline \
            --with-includes=/usr/local/Cellar/ossp-uuid/1.6.2/include \
            --with-includes=/usr/local/Cellar/openssl/1.0.1e/include/openssl \
            --enable-thread-safety \
            --with-bonjour --with-gssapi --with-krb5 --with-openssl \
            --with-libxml --with-libxslt --with-ossp-uuid --with-python \
            --with-perl --with-openssl ARCHFLAGS='-arch x86_64'
make
sudo make install

環境変数を良きに計らう。
zshの人は~/.zshrc、bashの人は~/.bashrcをエディタで開いて以下のように追加。

別にコピペしなくても、なんかそれらしく書いてあればおk
+PG_HOME=/usr/local/pgsql
+export PATH=${PG_HOME}/bin:${PATH}

設定を反映させる。
(※Macには最初からPostgreSQL用のコマンドが/usr/binに存在しているため、これをやらないと今インストールした方のコマンドが呼ばれない)

bashの人は.bashrcに読み替えて
source ~/.zshrc

ここから本題。pg_bigm拡張をインストール。

問答無用にmasterから落としてきてますが、本当は安定版を入れるのがまっとうな人のやること
cd contrib/
git clone git://git.sourceforge.jp/gitroot/pgbigm/pg_bigm.git
cd pg_bigm/
make USE_PGXS=1
sudo make install

PostgreSQL用のユーザーを作る。

ポスグレはUNIXユーザーとDBのユーザーが結びついてて面倒ですね
sudo dscl . create /Users/_postgres UniqueID 113
sudo dscl . create /Users/_postgres PrimaryGroupID 113
sudo dscl . create /Users/_postgres NFSHomeDirectory /usr/local/pgsql/
sudo dscl . create /Users/_postgres RealName "PostgreSQL Server"
sudo dscl . create /Users/_postgres Password "*"
sudo dscl . create /Users/_postgres UserShell /bin/zsh
sudo dscl . append /Users/_postgres RecordName postgres

sudo dscl . create /Groups/_postgres
sudo dscl . create /Groups/_postgres PrimaryGroupID 113
sudo dscl . create /Groups/_postgres RealName "PostgreSQL Users"
sudo dscl . append /Groups/_postgres RecordName postgres

_postgresユーザーのデフォルトシェルをzshにした人は自分の.zshrcを、bashにした人は.bashrcをコピーしておくと便利。
PostgreSQLサーバが起動するためのディレクトリを作っておく。

/usr/local/var/posgresはbrewでインストールしたときと同じディレクトリなので、別にしたい人は適当な場所に
sudo cp ~/.zshrc /usr/local/pgsql/
sudo mkdir -pm 0700 /usr/local/var/postgres/data
sudo mkdir /usr/local/var/postgres/log
sudo chown -R postgres:postgres /usr/local/var/postgres

設定ファイルでpg_bigmの拡張を有効にする。

おなじみのpostgresql.conf
sudo cp /usr/local/pgsql/share/postgresql.conf.sample /usr/local/pgsql/postgresql.conf
sudo cp /usr/local/pgsql/share/pg_hba.conf.sample /usr/local/pgsql/pg_hba.conf
/usr/local/pgsql/postgresql.confを編集
-#shared_preload_libraries = ''		# (change requires restart)
+shared_preload_libraries = 'pg_bigm'

postgresユーザーになってデータベースを初期化、そのまま起動。

波動エンジン起動
sudo su - postgres
/usr/local/pgsql/bin/initdb -E UTF8 -D /usr/local/var/postgres/data --locale=C
/usr/local/pgsql/bin/pg_ctl -D /usr/local/var/postgres/data -l /usr/local/var/postgres/log/postgresql.log start

あとはドキュメントを参考に、適当なデータベースを作成してCREATE EXTENSION、テーブルにGINインデックスを設定すれば、めでたくpg_bigmが使えるようになる。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?