开源项目 智能文本输入助手

github源码:https://github.com/Worthy-Wang/SpellCorrect


项目简介

该项目是个一个用于对输入单词进行关联性分析,旨在为用户输入更好的查询建议的智能助手。实现了输入查询词,联想推荐出候选词,返回结果的整个输入助手的流程。线下部分使用cppjieba分词读取语料库创建词典中英文字符串分割算法创建索引文件;线上部分采用MirrorLib框架搭建服务器,根据请求的查询词,通过最小编辑距离算法优先级队列选出候选词,用jsoncpp封装后返回给客户端。后期优化则为计算线程建立局部cache,采用LRU算法进行缓存淘汰,并使用timerfd定时更新全局cache

项目架构

1.首先搭建好线程池,启动线程时都在等待任务队列出任务
2.启动封装好的服务器程序,当客户端发来请求时,将此请求封装成一个任务,加入任务队列,让子线程去完成该任务
3.完成对于查询词业务逻辑的设计
开源项目 智能文本输入助手_第1张图片

项目流程

离线版本

  1. 创建词典与索引文件
    技术亮点:开源cppjieba分词库正则表达式UTF-8中英文编码处理文件流字符串流操作, Unix目录操作单例模式(饿汉)最小编辑距离算法优先级队列

在线部分

  1. 搭建线程池框架
    技术亮点:基于对象线程池设计Posix线程类,互斥锁,条件变量任务队列自动加解锁类子线程安全退出机制回调函数智能指针unique_ptr
  2. 搭建服务器框架
    技术亮点:基于对象服务器设计回调函数socket网络编程IO多路复用epolleventfd(IO线程与计算线程分离)客户端安全退出机制智能指针shared_ptr
  3. 搭建搜索引擎框架
    技术亮点:内存Cache与磁盘Cachetimerfd定时器(全局Cache更新)缓存淘汰策略LRU算法开源库jsoncpp

你可能感兴趣的:(开源项目)