2794432 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

傀儡師の館.Python

PR

X

日記/記事の投稿

カレンダー

キーワードサーチ

▼キーワード検索

カテゴリ

バックナンバー

2021年06月
2021年05月
2021年04月
2021年03月
2021年02月
2021年01月
2020年12月
2020年11月
2020年10月
2020年09月

フリーページ

プロフィール


kugutsushi

サイド自由欄

設定されていません。
2007年07月27日
XML
カテゴリ:Python
SQLite の全文検索 FTS2 をちょっと試してみた。だが、結論から言えば、Python から FTS2 を使うのはまだちょっと辛い。というか、FTS2 で日本語を使うのはまだ辛いところがある。けれど、まったく使えないということはないのでやってみる。

Full-text Search for SQLiteFTS1FTS2 の 2つのバージョンがある。どちらも SQLite の外部モジュールとして開発されている。FTS1 のパフォーマンスを改善しているのが FTS2。FTS1 と FTS2 は互換性がないので、後々のことを考えると今から FTS2 を使っておいた方がよいようだ。表面上の使い方は FTS1 を FTS2 と書き換えるだけで、現状同じようだが、内部的なデータの保存方法に関してはまったく違うようだ。

ソースは、CVS からダウンロードするか、SQLite のソースの中の ext/fts1、ext/fts2 にある。SQLite Download から、とりあえず Windows 上で動かすためのバイナリ fts2dll-3_4_1.zip を使って試すと動いた。Linux 版も試す。これは自分でコンパイルした。

下のは、簡単に試したもの。分かち書きしていないとダメなので、手で分かち書きしたものを使ってやってみる。


-- VIRTUAL TABLE を使い
-- USING FTS2 で全文検索用のインデックスが作られるようだ。

CREATE VIRTUAL TABLE memo USING FTS2(title TEXT, body TEXT);

-- INSERT は普通に INSERT する。

INSERT INTO memo (title, body) VALUES ('日本語 を 使う',
'日本語 を 使っ て メモ を 作っ て み ます 。');

INSERT INTO memo (title, body) VALUES ('分かち書き',
'日本語 は 分かち書き を あらかじめ やっ て から 文字 列 を 書き込み ます 。');

INSERT INTO memo (title, body) VALUES ('SQLite の 拡張',
'FTS2 は 拡張モジュールだがあとで');

INSERT INTO memo (title, body) VALUES ('メモ を 使う',
'日本語 を 使っ て メモ を 作っ て み ます 。');

-- とりあえず、INSERT したものを見てみる。

SELECT rowid, title, body FROM memo;

1|分かち書き|日本語 は 分かち書き を あらかじめ やっ て
から 文字 列 を 書き込み ます 。
2|メモ を 使う|日本語 を 使っ て メモ を 作っ て み ます 。
3|日本語 を 使う|日本語 を 使っ て メモ を 作っ て み ます 。

-- MATCH を使って検索する文字を指定する。

SELECT title FROM memo WHERE title MATCH '使う';
メモ を 使う
日本語 を 使う

SELECT title, body FROM memo WHERE body MATCH 'メモ';
メモ を 使う|日本語 を 使っ て メモ を 作っ て み ます 。
日本語 を 使う|日本語 を 使っ て メモ を 作っ て み ます 。

とりあえず、分かち書きしてあれば検索ができることは確認できた。

SQLite の全文検索を Python から使ってみる (2) へ続く






最終更新日  2007年07月28日 10時17分32秒
コメント(0) | コメントを書く
[Python] カテゴリの最新記事



© Rakuten Group, Inc.