SQLite3学習 FTS5のfts5vocab仮想テーブル
成果物
fts5vocab仮想テーブル
fts5vocabはFTS5の情報を得るためのテーブルである。row
,col
,instance
の3種類ある。
作成
create virtual table テーブル名 using fts5vocab('FTSテーブル名', 'タイプ');
作ってみる。
.load ./fts5_mecab begin transaction; -- FTSテーブル create virtual table posts using fts5(title, content, tokenize='mecab'); insert into posts values('タイトルです', '本文です。'); insert into posts values('タイトなタイトルです', '本文章は本文です。'); insert into posts values('表題です', 'タイトな本文です。'); -- fts5vocabテーブル create virtual table posts_row using fts5vocab('posts', 'row'); create virtual table posts_col using fts5vocab('posts', 'col'); create virtual table posts_instance using fts5vocab('posts', 'instance'); commit;
テーブルの中身をみてみる。
.headers on .mode column select * from posts; select * from posts_row; select * from posts_col; select * from posts_instance;
title content ---------- ---------- タイトルです 本文です。 タイトなタイトルです 本文章は本文です。 表題です タイトな本文です。
row
。
term doc cnt ---------- ---------- ---------- 。 3 3 です 3 6 な 2 2 は 1 1 タイト 2 2 タイトル 2 2 文章 1 1 本 1 1 本文 3 3 表題 1 1
col
。
term col doc cnt ---------- ---------- ---------- ---------- 。 content 3 3 です title 3 3 です content 3 3 な title 1 1 な content 1 1 は content 1 1 タイト title 1 1 タイト content 1 1 タイトル title 2 2 文章 content 1 1 本 content 1 1 本文 content 3 3 表題 title 1 1
instance
。
term doc col offset ---------- ---------- ---------- ---------- 。 1 content 2 。 2 content 5 。 3 content 4 です 1 title 1 です 1 content 1 です 2 title 3 です 2 content 4 です 3 title 1 です 3 content 3 な 2 title 1 な 3 content 1 は 2 content 2 タイト 2 title 0 タイト 3 content 0 タイトル 1 title 0 タイトル 2 title 2 文章 2 content 1 本 2 content 0 本文 1 content 0 本文 2 content 3 本文 3 content 2 表題 3 title 0
気づいたのだが、ほとんどがキーワードたりえない無駄な語である。「です」「。」「な」「は」など文中に出てくる語は排除したい。このように、解析するときに有用か。
タイプ
fts5vocabのタイプについて。
row
列 | 概要 |
---|---|
term |
FTS5インデックスに保存されている用語。 |
doc |
用語のインスタンスを少なくとも1つ含む行の数。 |
cnt |
FTS5テーブル全体の用語のインスタンスの総数。 |
col
列 | 概要 |
---|---|
term |
FTS5インデックスに保存されている用語。 |
col |
用語を含むFTS5テーブル列の名前。 |
doc |
列$col に用語のインスタンスが少なくとも1つ含まれているFTS5テーブル内の行の数。 |
cnt |
FTS5テーブルの列$col に表示される用語のインスタンスの総数(すべての行を考慮)。 |
instance
列 | 概要 |
---|---|
term |
FTS5インデックスに保存されている用語。 |
doc |
インスタンスという用語を含むドキュメントのROWID。 |
col |
インスタンスという用語を含む列の名前。 |
offset |
列内の用語インスタンスのインデックス。用語には、0から始まる出現順に番号が付けられます。 |
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- SQLite 3.29.0
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux
前回まで
- SQLite3学習をはじめよう
- SQLite3学習 SQLiteについて
- SQLite3学習 SQLiteの適切な用途
- SQLite3学習 SQLiteの特徴
- SQLite3学習 SQLiteのクセ
- SQLite3学習 データ型とアフィニティ
- SQLite3学習 演算子の一覧
- SQLite3学習 よくある質問
- SQLite3学習 SQLiteダウンロード&コンパイル
- SQLite3学習 Tclで操作する
- SQLite3学習 ビルドオプション動作確認(SQLITE_ALLOW_URI_AUTHORITY)
- SQLite3学習 面白そうなコンパイルオプション
- SQLite3学習 SQLiteの拡張について
- SQLite3学習 JSON拡張
- SQLite3学習 JSON拡張(json_extract)
- SQLite3学習 JSON拡張(json_each)
- SQLite3学習 JSON拡張(json_tree オブジェクト→行)
- SQLite3学習 JSON拡張(json_tree オブジェクトツリー→行)
- SQLite3学習 JSON拡張(json_tree オブジェクト配列→行)
- SQLite3学習 JSON拡張(json_group_array 行→配列)
- SQLite3学習 JSON拡張(json_group_object 行→オブジェクト)
- SQLite3学習 JSON拡張(json_array_length)
- SQLite3学習 JSON拡張(json_type)
- SQLite3学習 JSON拡張(json_valid)
- SQLite3学習 JSON拡張(json_quote)
- SQLite3学習 JSON拡張(json_array)
- SQLite3学習 JSON拡張(json_object)
- SQLite3学習 JSON拡張(json_patch)
- SQLite3学習 JSON拡張(json_insert)
- SQLite3学習 JSON拡張(json_replace)
- SQLite3学習 JSON拡張(json_set)
- SQLite3学習 JSON拡張(json_remove)
- SQLite3学習 全文検索(FTS5)
- SQLite3学習 全文検索FTSを日本語で使う方法を調べてみた
- 形態素解析MeCabをインストールする
- SQLite3学習 全文検索FTS5のMeCab用トークナイザを実装する
- SQLite3学習 FTS5+MeCabでクエリ構文
- SQLite3学習 FTS5のテーブル作成と初期化
- SQLite3学習 FTS5の補助関数