因为做推荐系统时,要对聊天,心愿,搜索结果做关键词提取,那么就需要找一个匹配结果好,性能优的关键词搜索算法,于是就找到了DFA关键词过滤算法,DFA即Deterministic Finite Automaton,也就是确定有穷自动机,它是是通过event和当前的state得到下一个state,即event+state=nextstate。
代码实现:
/** * 构建搜索树 * @param keywordList 敏感词库 */ @SuppressWarnings({ "rawtypes", "unchecked" }) private Map<Character, Map<?, ?>> initKeyworldStore(List<String> keywordList) { Map<Character, Map<?, ?>> nodeStore = new HashMap<>();// 初始化敏感词容器,减少扩容操作 for (String keyword : keywordList) { Map<Character, Map<?, ?>> tempStore = nodeStore; char[] nodeList = keyword.toCharArray(); int length = nodeList.length; for (int i = 0; i < length; i++) { char node = nodeList[i]; Map result = tempStore.get(node); if (result == null) { res