TOP業務システム> データの登録
Ludia
高性能なオープンソース全文検索システム「Ludia」

第4回:Ludiaを体験

著者:NTTデータ  加納 寿浩   2007/1/30
前のページ  1  2  3  4
データの登録

   ダウンロードしたCSVデータをcopy文にてテーブルに挿入します。各々、エラーなくcopyされたことを確認してください。
ludia=# copy zip from '/home/postgres/KEN_ALL.CSV' with csv;
COPY

ludia=# copy zip2 from '/home/postgres/KEN_ALL.CSV' with csv;
COPY


全文検索インデックス定義

   全文検索インデックスを定義します。zipテーブルには、単語インデックスを定義します。zip2テーブルには、N-gramインデックスを定義します。

ludia=# create index idx_word on zip using fulltext(address);
CREATE INDEX
ludia=# create index idx_ngram on zip2 using fulltextb(address);
CREATE INDEX
ludia=# \d zip
Table "public.zip"
Column | Type | Modifiers
−−−−−−−−− + −−−−−−−−−−−−−− + −−−−−−−−−−
zipcode | character(7) |  
address | text |
Indexes:
"idx_word" fulltext (address)

ludia=# \d zip2
Table "public.zip2"
Column | Type | Modifiers
−−−−−−−−− + −−−−−−−−−−−−−− + −−−−−−−−−−
zipcode | character(7) |  
address | text |
Indexes:
"idx_word" fulltext (address)

   各々指定した全文検索インデックスが設定されたことが確認できます。これで全文検索を行う準備は完了です。


いよいよ全文検索

   早速Ludiaを使用して全文検索を行ってみましょう。Ludiaでは、「@@」という演算子を定義しています。これを用い、where条件を指定することで全文検索が行えます。単語インデックス、N-gramインデックスいずれでも、同じ@@演算子で検索を行います。

ludia=# select * from zip where address @@ '茨木市春日';
zipcode | address
−−−−−−−−−−−−−−− + −−−−−−−−−−−−−−−
5670031 | 大阪府茨木市春日
(1 row)

ludia=# select * from zip2 where address @@ '茨木市春日';

zipcode | address
−−−−−−−−−−−−−−− + −−−−−−−−−−−−−−−
5670031 | 大阪府茨木市春日
(1 row)


   複数の検索キーワードをAND検索する場合は、各々のキーワードの前に「+」演算子を付与します。

ludia=# select * from zip where address @@ '+茨木市 +春日';
zipcode | address
−−−−−−−−−−−−−−− + −−−−−−−−−−−−−−−
5670031 | 大阪府茨木市春日
(1 row)

ludia=# select * from zip2 where address @@ '+茨木市 +春日';

zipcode | address
−−−−−−−−−−−−−−− + −−−−−−−−−−−−−−−
5670031 | 大阪府茨木市春日
5670046 | 大阪府茨木市南春日丘
5670048 | 大阪府茨木市北春日丘
(3 row)


   この例では、単語インデックスとN-gramインデックスによる結果の差異がでています。第2回の解説と、上記の住所をMeCabに投入してみて、どのように動作している(形態素解析している)のか確認してみてください。

前のページ  1  2  3  4


株式会社NTTデータ 加納 寿浩
著者プロフィール
株式会社NTTデータ  加納 寿浩
日本でも有数の大規模システム更改プロジェクトに企画段階からサービス開始まで従事。主にメインフレーム上のデータベース性能対策を行う。その後、該当システムのオープン化検証にて、オープン系DBMSの評価を行った。2005年から現職。Ludiaプロジェクトの立ち上げを行う。


INDEX
第4回:Ludiaを体験
  オープンソース全文検索の導入
  Sennaの導入
  Ludiaの動作環境設定
データの登録