fillSegment method

void fillSegment(
  1. List<String> charArray, [
  2. int begin = 0,
  3. int? length,
  4. int enabled = 1,
])

加载填充词典片段

@param charArray @param begin @param length @param enabled

Implementation

void fillSegment(List<String> charArray,
    [int begin = 0, int? length, int enabled = 1]) {
  length ??= charArray.length;
  // 获取字典表中的汉字对象
  String beginChar = charArray[begin];
  String? keyChar = charMap[beginChar];
  // 字典中没有该字,则将其添加入字典
  if (keyChar == null) {
    charMap[beginChar] = beginChar;
    keyChar = beginChar;
  }

  // 搜索当前节点的存储,查询对应keyChar的keyChar,如果没有则创建
  DictSegment? ds = lookforSegment(keyChar, enabled);
  if (length > 1) {
    // 词元还没有完全加入词典树
    ds!.fillSegment(charArray, begin + 1, length - 1, enabled);
  } else if (length == 1) {
    // 已经是词元的最后一个char,设置当前节点状态为enabled,
    // enabled=1表明一个完整的词,enabled=0表示从词典中屏蔽当前词
    ds!.nodeState = enabled;
  }
}