導語:如何使用Java實現AC自動機全文檢索,下面是小編給大家推薦的程式碼實現過程,大家可以參考閱讀,更多詳情請關注應屆畢業生考試網。
第一步,構建Trie樹,定義Node型別:
/**
* Created by zhaoyy on 2017/2/7.
*/
interface Node {
char value();
boolean exists();
boolean isRoot();
Node parent();
Node childOf(char c);
Node fail();
void setFail(Node node);
void setExists(boolean exists);
void add(Node child);
List<Node> children();
}
第二步,實現兩種Node,如果詞彙全是可列印的ASCII字元,就採用AsciiNode,否則(比如包含漢字),使用基於hash表的ode;這兩種Node均整合自AbstractNode:
/**
* Created by zhaoyy on 2017/2/8.
*/
abstract class AbstractNode implements Node {
private static final char EMPTY = '