导语:如何使用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 = '