nlib
nn::nlib::succinct::AhoCorasick クラスfinal

AC法を用いて語やパターンの検出を行います。 [詳解]

#include "nn/nlib/succinct/AhoCorasick.h"

公開メンバ関数

void Reset () noexcept
 オブジェクトをコンストラクタが呼ばれた直後の状態にします。
 
基本的なメンバ関数
 AhoCorasick () noexcept
 デフォルトコンストラクタです。
 
 ~AhoCorasick () noexcept
 デストラクタです。
 
AhoCorasickassign (AhoCorasick &rhs, move_tag)
 swapを利用したムーブにより代入します。
 
 AhoCorasick (AhoCorasick &rhs, move_tag)
 swapを利用したムーブによりオブジェクトを構築します。
 
 AhoCorasick (AhoCorasick &&rhs)
 ムーブコンストラクタです。C++11の利用時に有効です。
 
AhoCorasickoperator= (AhoCorasick &&rhs)
 ムーブ代入演算子です。C++11の利用時に有効です。
 
void swap (AhoCorasick &rhs) noexcept
 オブジェクトの内容をスワップします。
 
データのインポートとエクスポート
bool Export (BinaryWriter *w) const noexcept
 オブジェクトを(ファイルに)書き出します。 [詳解]
 
bool Import (BinaryReader *r) noexcept
 書き出されたオブジェクトを読み出します。 [詳解]
 

文字列のマッチング

typedef bool(* MatchCallback) (const char *first, const char *last, uint32_t nodeid, void *user_obj)
 ユーザー定義のコールバック関数で、検索対象文字列が検出された場合に呼び出されます。 [詳解]
 
void Match (const char *doc, MatchCallback callback, void *userobj) noexcept
 文字列を検査して検出対象の文字列を検出します。 [詳解]
 
void Match (const void *data, size_t n, MatchCallback callback, void *userobj) noexcept
 データを検査して検出対象のパターンを検出します。 [詳解]
 
size_t MemSize () const noexcept
 このクラスが明示的に確保するメモリ量を返します。 [詳解]
 

詳解

AC法を用いて語やパターンの検出を行います。

説明
AC法を下記の論文で説明されている手法で実装していて(細部は異なる)、AC法で利用するオートマトンをコンパクトなサイズに収めています。
クラスオブジェクトは、AhoCorasickBuilder::Build()で作成するかAhoCorasick::Import()関数で読み込むかすることで構築します。

AhoCorasick.h31 行目に定義があります。

型定義メンバ詳解

◆ MatchCallback

nn::nlib::succinct::AhoCorasick::MatchCallback

ユーザー定義のコールバック関数で、検索対象文字列が検出された場合に呼び出されます。

引数
[in]first検出語の先頭を指すポインタ
[in]last検出語の直後を指すポインタ
[in]nodeid検出した語のID(連続値ではない)
[in,out]user_objユーザー指定オブジェクトへのポインタ
戻り値
trueの場合は引き続き解析を続ける。falseの場合は処理を打ち切り
説明
文字列(パターン)を検出した場合に呼び出されます。ユーザーはそれに対応した処理を記述します。

AhoCorasick.h46 行目に定義があります。

関数詳解

◆ Export()

nn::nlib::succinct::AhoCorasick::Export ( BinaryWriter w) const
noexcept

オブジェクトを(ファイルに)書き出します。

引数
[in]w書き出し用オブジェクト
戻り値
成功した場合はtrue
説明
書きだしたデータはImport()関数で読みだして復元することができます。 また、データは常にリトルエンディアンで書き出されます。

◆ Import()

nn::nlib::succinct::AhoCorasick::Import ( BinaryReader r)
noexcept

書き出されたオブジェクトを読み出します。

引数
[in]r読み出し用オブジェクト
戻り値
インポートが成功した場合はtrue

◆ Match() [1/2]

nn::nlib::succinct::AhoCorasick::Match ( const char *  doc,
MatchCallback  callback,
void *  userobj 
)
inlinenoexcept

文字列を検査して検出対象の文字列を検出します。

引数
[in]docヌル終端する文字列
[in]callback語が検出された場合に呼び出されるコールバック関数
[in,out]userobjユーザー指定オブジェクトへのポインタ

AhoCorasick.h48 行目に定義があります。

◆ Match() [2/2]

nn::nlib::succinct::AhoCorasick::Match ( const void *  data,
size_t  n,
MatchCallback  callback,
void *  userobj 
)
noexcept

データを検査して検出対象のパターンを検出します。

引数
[in]data検査対象のデータ
[in]nデータサイズ
[in]callbackパターンが検出された場合に呼び出されるコールバック関数
[in,out]userobjユーザー指定オブジェクトへのポインタ

◆ MemSize()

nn::nlib::succinct::AhoCorasick::MemSize ( ) const
noexcept

このクラスが明示的に確保するメモリ量を返します。

説明
実際にシステムが確保するメモリ量はアライメントやヒープの管理領域の関係上この関数の返り値より大きい可能性があります。
戻り値
バイト数

このクラス詳解は次のファイルから抽出されました: