AC法を用いて語やパターンの検出を行います。
[詳解]
#include "nn/nlib/succinct/AhoCorasick.h"
|
typedef bool(* | MatchCallback) (const char *first, const char *last, uint32_t nodeid, void *user_obj) |
| ユーザー定義のコールバック関数で、検索対象文字列が検出された場合に呼び出されます。 [詳解]
|
|
void | Match (const char *doc, MatchCallback callback, void *userobj=NULL) noexcept |
| 文字列を検査して検出対象の文字列を検出します。 [詳解]
|
|
void | Match (const void *data, size_t n, MatchCallback callback, void *userobj=NULL) noexcept |
| データを検査して検出対象のパターンを検出します。 [詳解]
|
|
size_t | MemSize () const noexcept |
| このクラスが明示的に確保するメモリ量を返します。 [詳解]
|
|
AC法を用いて語やパターンの検出を行います。
- 説明
- AC法を下記の論文で説明されている手法で実装していて(細部は異なる)、AC法で利用するオートマトンをコンパクトなサイズに収めています。
- クラスオブジェクトは、
AhoCorasickBuilder::Build()
で作成するかAhoCorasick::Import()
関数で読み込むかすることで構築します。
AhoCorasick.h の 54 行目に定義があります。
nn::nlib::succinct::AhoCorasick::MatchCallback |
ユーザー定義のコールバック関数で、検索対象文字列が検出された場合に呼び出されます。
- 引数
-
[in] | first | 検出語の先頭を指すポインタ |
[in] | last | 検出語の直後を指すポインタ |
[in] | nodeid | 検出した語のID(連続値ではない) |
[in,out] | user_obj | ユーザー指定オブジェクトへのポインタ |
- 戻り値
true
の場合は引き続き解析を続ける。false
の場合は処理を打ち切り
- 説明
- 文字列(パターン)を検出した場合に呼び出されます。ユーザーはそれに対応した処理を記述します。
AhoCorasick.h の 66 行目に定義があります。
nn::nlib::succinct::AhoCorasick::Export |
( |
BinaryWriter * |
w | ) |
const |
|
noexcept |
オブジェクトを(ファイルに)書き出します。
- 引数
-
- 戻り値
- 成功した場合は
true
- 説明
- 書きだしたデータは
Import()
関数で読みだして復元することができます。 また、データは常にリトルエンディアンで書き出されます。
書き出されたオブジェクトを読み出します。
- 引数
-
- 戻り値
- インポートが成功した場合は
true
nn::nlib::succinct::AhoCorasick::Match |
( |
const char * |
doc, |
|
|
MatchCallback |
callback, |
|
|
void * |
userobj = NULL |
|
) |
| |
|
inlinenoexcept |
文字列を検査して検出対象の文字列を検出します。
- 引数
-
[in] | doc | ヌル終端する文字列 |
[in] | callback | 語が検出された場合に呼び出されるコールバック関数 |
[in,out] | userobj | ユーザー指定オブジェクトへのポインタ |
AhoCorasick.h の 68 行目に定義があります。
nn::nlib::succinct::AhoCorasick::Match |
( |
const void * |
data, |
|
|
size_t |
n, |
|
|
MatchCallback |
callback, |
|
|
void * |
userobj = NULL |
|
) |
| |
|
noexcept |
データを検査して検出対象のパターンを検出します。
- 引数
-
[in] | data | 検査対象のデータ |
[in] | n | データサイズ |
[in] | callback | パターンが検出された場合に呼び出されるコールバック関数 |
[in,out] | userobj | ユーザー指定オブジェクトへのポインタ |
nn::nlib::succinct::AhoCorasick::MemSize |
( |
| ) |
const |
|
noexcept |
このクラスが明示的に確保するメモリ量を返します。
- 説明
- 実際にシステムが確保するメモリ量はアライメントやヒープの管理領域の関係上この関数の返り値より大きい可能性があります。
- 戻り値
- バイト数
このクラス詳解は次のファイルから抽出されました: