- 検出用キーワードを登録してAC法を実行するサンプルです。
- "pen", "this"というキーワードを検出することができるオートマトンを構築して"this is a pen."という文中のキーワードの位置をAC法により検出します。
- AC法のオートマトンは
ac.exe
を利用してオフラインで構築することもできます。 他のサンプルのMakefile等を参照してください。
using nlib_ns::succinct::AhoCorasickBuilder;
using nlib_ns::succinct::AhoCorasick;
bool MyMatchCallback(const char* first, const char* last, uint32_t nodeId, void*) {
char str[4096];
int i = 0;
while (first != last) str[i++] = *first++;
str[i] = '\0';
return true;
}
bool SampleMain(int, char**) {
AhoCorasickBuilder builder;
if (!builder.Init()) return false;
if (!builder.AddWord("pen")) return false;
if (!builder.AddWord("this")) return false;
AhoCorasick* ac = builder.Build();
if (!ac) return false;
ac->Match("this is a pen.", MyMatchCallback);
delete ac;
return true;
}
NLIB_MAINFUNC