傀儡師の館.Python

傀儡師の館.Python

PR

×

Calendar

Keyword Search

▼キーワード検索

Archives

2026.08
2026.07
2026.06
2026.05
2026.04
2026.03
2026.02
2026.01
2025.12
2025.11

Profile

kugutsushi

kugutsushi

Free Space

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

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

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

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



-- 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)





お気に入りの記事を「いいね!」で応援しよう

Last updated  2007.07.28 10:17:32コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: