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

Page tree

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

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

 

 

一. 想要解决的问题

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=48f995732d0169ab349aa1ce16e0b83f

 

② 思路

首先,获取补全建议接口中的结果集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=48f995732d0169ab349aa1ce16e0b83f

 

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

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