Java 搜索栏
流程图
登录流程图
注册
用户搜索流程
Google分数=(相关关键词分数X0.3)+(域名权重X0.25)+(外链分数X0.25)+(用户数据X0.1)+(内容质量分数X0.1)+(人工加分)-(自动或人工降分)
用户搜索的关键就在于分词+倒排索引
- 用户输入搜索语句
- 通过语句中是否有英文来判断使用智能分词还是完全分词
- 如果用户输入语句经过查询之后在 mgdb 中没有对应的 url,将提示用户没有对应的网址。
- 如果有,则将分词结果作为查询关键字,在 mgdb 中进行查询
- 将查询得到的 url 进行优先级排序,优先级高的优先显示
- 如果有则将排序后的查询结果返回的到前端。
- 通过 url : caption 的 json 返回。
url 排序
- 首先对搜索结果根据关键字排序
- 根据域名权重排序
如果搜索结果小于等于100,所有的搜索结果进行 url 排序。
如果搜索结果大于100,优先对关键字排序的前100进行 url 排序。
双链——>map+优先队列——>堆——> 图 ——> 归并+二分查找 ——> 平衡二叉树 ——> 红黑树 ——> treeMap——> treeSet
关键字排序
- 对用户的搜索语句进行分词
- 对分词结果在 mgdb 内进行查询
- 当网址被第一次搜索到的时候,计算其域名权重。然后添加人工加分
- 网址每包含一个关键字便加十分
- 所用有关搜索结果的网址都进行了计算之后,根据权重由大到小进行排序。当出现排序一致的时候,根据默认的优先级显示
使用 redis 存储
域名权重计算
- 每天计算网址访问的次数
- 每访问一次加1分
- 每天凌晨都将当天的的域名权重×0.25
使用数据库保存
测试用例
email:1059217325@qq.com
phone:11122223333
password:123456abcABC