suggest向けDDL解説 ================== suggest機能で必要となるスキーマを説明する。なお、このドキュメントはsuggest機能完成とともにdocsディレクトリ内に移動される。 1. 概要 suggestデータベースには、学習過程でのみ必要になるテーブルと、 学習時およびサジェスト時に必要になるテーブルがあります。 前者を作業用テーブルと呼び、後者を学習結果テーブルと呼びます。 2. 学習結果テーブル 学習結果テーブルは二つのファクトテーブルと二つの語彙テーブルから構成されます。 2.1. 学習結果ファクトテーブル item: suggest候補として提示する個々の文字列を格納するテーブルです。 以下のカラムを用意しています。 _key: itemテーブルの主キーは、サジェスト対象文字列そのものとなります。 kana: 対象文字列の読み仮名を格納します。必須ではありませんが、セットされていればローマ字入力途中の文字列に対しても補完候補を提示可能となります。 freq: ユーザクエリにおいて入力された回数を記録します。 last: ユーザクエリに最後に入力された時刻を記録します。 freq2: ユーザクエリにおいてサブミットされた回数を記録します。 boost: 当該文字列の露出を制御します。正値を指定すれば露出が頻繁になり、-1を指定すれば、露出されません。 buzz: 入力回数の差分を記録します。 co: 共起する他の文字列を参照するための索引です。 pair: item間の共起関係を管理するテーブルです。 以下のカラムを用意しています。 _kay: preおよびpostのIDを結合した数値が主キーとなります。 pre: 事前に出現するアイティムです。 post: 事後に出現するアイティムです。 freq0: completeイベントにおける共起頻度を記録します。 freq1: correctイベントにおける共起頻度を記録します。 freq2: suggestイベントにおける共起頻度を記録します。 2.2. 学習結果語彙テーブル bigram: itemの主キーによって全文検索を行うための語彙表です。 kana: itemのkanaカラムの入力補完を行うための語彙表です。 3. 作業用テーブル 作業用テーブルにはeventとsequenceの2テーブルがあります。 event: ユーザの個々のクエリイベントに対応します。レコードの追加のみが行われます。 適宜dropして再作成することが望ましいです。 type: submitの有無を記録します。 time: イベントが発生した時刻を記録します。 item: ユーザが入力した文字列を記録します。 sequence: ユーザの識別子(cookie, ipアドレス等)を記録します。 sequence: 同一ユーザの一連の操作を記録します。レコードの追加のみが行われます。 適宜dropして再作成することが望ましいです。 events: 当該ユーザの操作履歴を記録します。