【仅供内部供应商使用,不提供对外解答和培训】

Page tree

【仅供内部供应商使用,不提供对外解答和培训】

Skip to end of metadata
Go to start of metadata

 

 

一. 想要解决的问题

alphafine作为入口,需要整合更多的模块,智能客服小帆可以支撑简单的语义搜索,帮助完善搜索功能。

二.如何解决这些问题

此次引用七部分功能设计,帮助完善搜索功能。

1.热门问题

搜索前显示知识库热门搜索,缓存一周的服务器数据。当用户没有启用联网搜索时不预先显示热门问题。键入字符时自动消失,清空字符时重x新出现。(六类问题分别是:快速入门、参数应用、图表展示、填报应用、注册、数据连接)

① 接口示例

 

http://robot.finereport.com/openapi/hot.php

 

创建一个界面类,HotIssuesPane,其构造函数传入热门问题标题及标题下的(最多)四个问题。HotIssuesPane包括3个Jpanel,布局在NORTH,CENTER,SOUTH,NORTH布局一个图片,CENTER布局标题,SOUTH布局4个标题下的问题。② 界面设计

创建一个面板,布局为网格布局(2*3),每个网格都是一个HotIssuesPane的实例。

③ 大致流程


2.分词查询

2.1 用户键入文字,超过四个汉字字符时使用内置分词库开始实时获取分词结果,原则上在不同模块中同时搜索多个词语结果取并集。

① 接口

使用icu4j分词算法进行分词。

 

分词示例
BreakIterator itor = BreakIterator.getWordInstance();
itor.setText(searchText);
int start = itor.first();
for (int end = itor.next();
     end != BreakIterator.DONE;
     start = end, end = itor.next()) {
     String word = searchText.substring(start, end);
}

 

② 思路

写方法isNeedSegmentation(String searchText),返回类型boolean,如果为true需要分词,反之不分词。

将分词结果存入字符串数组中(segmentationStr),在循环中对分好的词进行搜索。将结果取并集,存入searchListModel中。

③ 大致流程

2.2 设置、应用中心、模板名称:每个类别最多展示5条搜索结果,展示的时候若分词的结果总数不超过5条,则全部展示,超过5条则按照匹配度从高到低展示前5条,右上角增加显示全部按钮。

该功能点已实现。

2.3 帮助文档适配新分词接口。

① 思路

该新增功能点需求:选中状态中关键词不高亮,关键词高亮。

监听中获取的搜索词汇,调用分词接口后,要传给渲染器ContentCellRender。可以设置一个类级别的字符串数组,存储最新的分词结果。ContentCellRender中判断是否选中的逻辑中。

如果选中,titleLabel.setText(“ ”+model.getName())并且设置前景色为白色,选中的面板设置为蓝色。如果未选中,选中的面板设置为白色,titleLabel设置字体时,嵌入HTML来设置颜色。具体做法是,将分词数组中的每一个词替换为:

“<HTML><font color=blue>”+segmentationStr.charAt(i)+”</font></html>”

3.猜您需要

猜您需要在原先最多3条的猜您需要的基础上,增加展示补全建议接口中获取的前5-n条消息(如果数量够),n为原先猜您需要所获得的条数,n小于等于3,猜您需要和补全建议总数超过五个时提供显示全部的选项。

① 接口

 

接口示例
http://robot.finereport.com/openapi/getkw.php?msg=数据集参数&token=48f99573616e0b83f

 

② 思路

首先,获取补全建议接口中的结果集completionAdviceModelList。

获取猜您需要的条数如果超过3条,就将3条放入lessModelList,多余的截取在显示更多的那个结果集moreModelList中。取两条completionAdviceModelList放入lessModelList中。

如果少于等于3条,将猜您需要的结果全部存在lessModelList中,记住条数为i。并从completionAdviceModelList中截取前5-i条放入lessModelList中。截取从5-i开始的剩余全部结果放入moreModelList中。

两种加起来不够5条,就将全部放入lessModelList。并将显示全部的渲染model加入list。

4.相关问题

增加相关问题模块,k:robot 。显示从相似问题接口中获取的前5条消息(如果数量够),超过五个时提供显示全部的选项。

 

接口示例
http://robot.finereport.com/openapi/like.php?action=search&msg=数据集参数&token=48f995732d01691249aa1ce16e0b83f

 

功能实现与其他类型相似。

5.具体回答

当选中猜您需要中的补全提示部分或相关问题部分,在按回车键或双击选项时跳转到web版的小帆,并自动键入搜索问题,关闭AlphaFine

某一行选中,可以同过model.getType().getTypeValue()来判断是否是猜您需要类型。通过model.getName()获取内容,拼入url,访问web小帆。调用AlphaFineDialog.this.setVisible(false);关闭AlphaFine

 

跳转小帆示例
http://robot.finereport.com/?send=数据集参数介绍 

 

6.增加配置项

alphafine设置对话框中改联网搜索方式,在联网搜索后增加分词搜索复选框,默认勾选。不选择分词搜索时,不显示功能而的相关数据。在搜索范围中增加智能客服复选框,对应功能点一、三、四。

① 思路

(1)界面设计

联网改为搜索方式;联网搜索后面增加一个分词搜索(UICheckBox)。

在搜索范围中增加一个智能客服选项(UICheckBox)

(2)逻辑设计

在各搜索类型的SearchManager内进行判断,如果配置面板中勾选此类型,则启用分词搜索,调用分词接口,在该模块同时搜索多个词语,结果取并集。如果配置面板勾选智能客服,则启用热门问题,猜您需要与相关问题。热门问题请参见1.热门问题。对于猜您需要与相关问题,将查询的结果与猜您需要,相关问题取并集返回给list。

7.   论坛提问

在搜索结果项展示页面,滚动到最底部时显示去论坛提问的额外选项,直接跳转到论坛fr提问板块中,用分割线与之前的内容区别开。

① 思路

创建AskModel,继承自AlphaCellModel。创建AskCellRender渲染AskModel。在搜索结果集最后加上一个自定义的AskModel实例。

AskCellRender界面设计,主要包括一条分隔线和一个UILabel。UiLabel设置事件点击跳转到论坛fr提问板块。

三.预见问题

1.   接口定义尚未明确,包括:

  • 获取热门问题的接口未知
  • 内置分词库接口未知
  • 补全建议接口未知
  • 相似问题接口未知

目前已和小帆接口人小伟哥联系,这几个接口都能提供,目前事务较多,这几个接口需要等几天。

接口文档已和小伟哥对齐,具体请查看小帆接口说明文档。

2.   关于热门问题中缓存一周的服务器数据

热门问题各类别下的问题是否就是缓存一周的服务器数据?

我理解用户没有联网时不预先显示热门问题,本地无需缓存一周服务器数据。

不存在本地缓存问题。

3.   分词接口使用本地还是小帆的

根据7月2号评审记录,“分词api使用自己的还是小帆的——用自己的,本地也可以实现分词。”

使用自己的分词接口,分词算法是我们自己实现吗?算法是否已实现,需要确认清楚。

使用本地的分词算法。icu4j jar包放入third中。

 

四.备注

接口文档请查看...

  • No labels