PostgreSQL フルテキストインデックスを生成する
## 概要
PostgreSQLにてバージョン1.4.6以前をご利用のお客様で、[横断検索](/ja/manual/crosssearch)の利用や[検索:検索の種類](/ja/manual/table-management-search-type)で「フルテキスト」を選択する場合は、本手順でフルテキストインデックスを作成してください。フルテキストインデックスを作成することで[横断検索](/ja/manual/crosssearch)や[検索:検索の種類](/ja/manual/table-management-search-type)で「フルテキスト」を選択したテーブルのフリーテキスト検索のパフォーマンスが向上しますが、更にパフォーマンスを向上したい場合はサーバの性能向上なども検討ください。
本手順の実施対象の早見表です。ご利用の環境と照らし合わせてご確認ください。
|DB|初期構築時バージョン|作業の必要性|本手順を実施しなかった場合の影響|備考|
|---|---|---|---|---|
|SQL Server|全てのバージョン|不要|-|-|
|PostgreSQL|1.4.6以前|必要|横断検索や検索の種類を「フルテキスト」を選択した場合のフリーテキスト検索において、検索結果の表示に時間がかかります。|初期構築時のバージョンが1.4.6以前の場合、その後バージョンアップをされても本手順を実施しないとフルテキストインデックスは生成されません。|
|PostgreSQL|1.4.7以降|不要|-|初期構築時のバージョンが1.4.7以降の場合はインストール時点でフルテキストインデックスが生成されますので本手順は不要です。|
|MySQL|全てのバージョン|不要|-|-|
## 注意事項
1. プリザンターの構成やデータの件数によって、フルテキストインデックスを生成するSQLの実行に時間がかかる場合があります。
## 前提条件
1. データベースがPostgreSQLを利用し、バージョン1.4.6以前で新規インストールした環境が対象となります。SQL Server、MySQLを利用した環境やバージョン1.4.7以降で新規インストールした場合は対象外です。
1. 最新版にバージョンアップされていても、新規インストール時のバージョンが1.4.6以前のPostgreSQL環境の場合は本手順を実施することでフルテキストインデックスが作成されます。
## 設定手順
1. プリザンターのデータベースに接続し、下記のSQLを実行してください。検索結果が1件以上表示される場合、既にフルテキストカラムに対するインデックスが生成されているため、以降の手順は不要です。
##### SQL
```sql
select * from pg_indexes where tablename = 'Items' and indexdef like '%FullText%';
```
1. プリザンターが導入されているサーバーへログインし、 プリザンターを停止してください。
1. プリザンターのデータベースに「Implem.Pleasanter_Owner」でログインして接続しください。
##### CMD
```
# psql -U Implem.Pleasanter_Owner -d Implem.Pleasanter -p 5432
```
1. 下記のSQLを実行して、フルテキストインデックスを生成します。
##### SQL
```sql
create index "ftx" on "Items" using gin ("FullText" gin_trgm_ops);
```
1. 下記のSQLを実行して、フルテキストインデックスが生成されていることを確認してください。下図の通り検索結果が表示されている場合、フルテキストインデックスが生成されています。
##### SQL
```sql
select * from pg_indexes where tablename = 'Items' and indexdef like '%FullText%';
```
![image](https://pleasanter.org/binaries/d9aa188fabec46afaa592fee697174f9)
1. プリザンターを開始してください。PostgreSQLの再起動は不要です。