统一搜索平台功能设计-导哥seo培训-东泽seo
统一性:包含数据信息的一致性、关键编码的一致性、百度搜索的一致性。 数据信息一致性:不一样的方式,有统一的数据整理通道,统一的信息检索插口。 针对一切的方式,例如www网站、手机app、pc客户端,及其在一种方式上的 不一样的检索种类,如歌曲识别,歌词搜索,女歌手检索,他们和统一搜索平台的数 据互动是一致的。
关键编码一致性:全部的检索运用同一套关键编码,不一样平台的数据信息连接以 及数据信息检索应用不一样的数据库索引和检索配备创建一套通用性的检索架构,此检索架构对 源数据信息开展扁平化设计解决,可处理随意种类的数据信息,从配备方面界定源数据信息中的字 段与数据库索引中字段名的相匹配,并依照配备特定的方法解决源数据信息中的字段名,添加数据库索引 文本文档中。
百度搜索一致性:在同样的数据库以上,需确保同样的检索对策状况下,搜 索結果的一致性。亦即不一样的方式,读取统一搜索平台下的检索,造成的检索结 果是一致的。
搜索平台程序模块需求分析见表6-1:
表6-1功能模块需求分析表
编号 | 手机软件控制模块名字 | 作用详细描述 |
1 | 精准配对检索 | 1.当搜索关键词与百度搜索彻底配对时回到精准配对結果 |
2 | 女歌手模糊匹配搜
索 |
1. 百度搜索引擎对女歌手信息内容开展模糊匹配
2. 回到女歌手百度搜索目录 3. 回到女歌手歌唱的歌曲列表 |
3 | 音乐模糊匹配搜
索 |
1. 百度搜索引擎对音乐信息内容开展模糊匹配
2. 回到歌歌曲识别結果目录 |
4 | 检索改错 | 1.当输入关键词岀现缺少、沉余、错字等状况,对检索关 键字开展改错后,以相对性恰当的效果开展检索 |
5 | 二分加自然语言理解 | 1.对客户上涨开展中文分词解决 |
52
分析 | 2.读取自然语言理解解析接口剖析客户的上涨信息内容
如:我要萧敬腾的东风破 分析出歌手名”萧敬腾”和歌曲歌词”东风破” |
|
6 | 同音词改错配对 | 1.开展多音字配对查看
如:周杰轮=萧敬腾 |
7 | 关键词搜索 | 1. 对一部分主题活动或音乐內容开展“关键词配备”
2. 当键入搜索关键词与配备信息内容相符合时回到配备相匹配的 百度搜索 如:检索”中国好歌声”,回到中国好歌声有关音乐 |
8 | 过虑后的精准匹
配 |
1.针对客户键入的关键词,过虑字段名,除掉全部特殊符号, 英语转成小写字母,精准配对 |
9 | 拼音字母全量配对搜 索 | 1.匹配检索客户键入的汉语拼音全拼音字符串数组 |
10 | 拼音字母首字母大写配对 检索 | 1.配对检索女歌手/音乐名的拼音首字母大写 |
11 | 作为前缀配对检索 | 1.针对键入的关键词,不对它进行中文分词,除掉前后左右不必要空格符, 英语转小写字母,随后再数据库索引库文件检索以客户输入关键词开始的所 有有关結果 |
12 | 英语模糊匹配 | 1.对客户键入的关键词,英语模糊不清度:0.9:,中文分词字段名,除掉 前后左右不必要空格符,英语转小写字母 |
13 | 音乐特性剖析 | 1. 对音乐开展归类和加标签解决 |
14 | 歌词搜索服务项目 | 1.在回到歌曲识别結果的与此同时,回到该音乐的歌曲歌词信息内容 |
15 | 近义词配对检索 | 1.配对客户键入到同义词库 如:迈克尔杰克逊==Jackson |
16 | 活动营销解决平 台 | 1. 活动营销支撑点
3. 自动生成主题活动数据信息电子邮件汇报 例如:演唱会网上抢票主题活动,选购 赠予主题活动,得奖类主题活动等 |
17 | 外界插口 | 1. 提各门户网检索插口
2. 接口身份验证 3. 回到百度搜索纪录结合 |
18 | 大信息量数据库索引创
建 |
1.全量数据信息引进 |
53
19 | 大信息量
music_info 索弓 | 建立— |
1.全量数据信息数据库索引建立和同歩 |
20 | 小总数量数据库索引创
建 |
1.临时性大批量总数引进 |
21 | 小信息量
music_info 索弓 | 建立 |
1.临时性大批量数据信息数据库索引建立和同歩 |
22 | 日志数据信息即时入 库 | 1. C/S构造日志服务项目
2. 即时搜集各制造阶段日志并进库 |
23 | 数据监测及短消息
警报服务平台 |
1. BI系统软件的数据监测控制模块
2. 每日自动识别数据统计結果,当出现异常后立即电子邮件或是 短信提醒相关负责人 |
24 | 网络服务器设备监控 及报警短信服务平台 | 1.生产制造网络服务器上布署的监管控制模块
用以检测服务器内存/电脑硬盘应用状况,出现异常后立即短消息 通告相关负责人 |
6.3检索作用编码展现
1.检索关键优化算法有关编码:
统一搜索平台关键百度搜索引擎选用Lucene技术架构;Lucene测算百度搜索及排 序标准选用的“文本文档优秀率”的定义。
文本文档的优秀率是在客户检索时即时推算出来的。假如在创建索引时就早已将每 个文本文档的成绩测算好,那麼当客户键入一切关键词时,优秀率最多的文本文档都是会排在 回到結果的最前边,这很明显是不规范的。因而,全部文本文档的优秀率理应都和客户输 入的关键词关系,并且是即时的数值。说白了优秀率,简易的了解便是查找的关 键字在全部文本文档的每个字段名中产生的頻率综合性数值。
Lucene的评分公式计算如下所示:
2
score(q, d) = coord(q, d) x queryNorm(q) x X (f (t in d) x idf (t) x t.getBoost() x norm(t, d))
tinq
54
public List<MusicInfo> searchMusicInfo(Query query, MineRequest req, List<String> infoTypes, int begin, int num, boolean useSort) { List<MusicInfo> list = null;
// lucene searcher
Searcher msiSearcher = null; MineQuery mineQuery = null;
try {
msiSearcher = usm,getMusicInfoSearcher(req);
boolean isUseTopSongHot = false;
boolean isUseNewSongHot = false;
boolean isUseTopSongBySingerHot = false;
boolean isUseNewSongBySingerHot = false;
boolean isUseAlbumHot = false;
boolean isUseSingerHot = true;
boolean isUseMiguHot = true;
try {
String isUseMiguStr = configer.getValue(req.getReqMode().toString(), req
.getProvinceCode() , req.getCityCode() , CONFIG_SCOPEr“music_search_isUseMigu”);
if(isUseMiguStr != null &&
“false”.equals(isUseMiguStr)){
isUseMiguHot = false;
}
55
} catch (Exception e) {
logger.error(“music search isUseMigu: “,e);
}
try {
String isUseSingerStr = configer ,getValue(req.getReqMode().toString(), req
,getProvinceCode(), req.getCityCode(), CONFIG SCOPE,“music search isUseSinger”);
if(isUseSingerStr != null && “false”.equals(isUseSingerStr)){
isUseSingerHot = false;
}
} catch (Exception e) {
logger.error(“music search isUseSinger: “,e);
}
2.百度搜索排序算法有关编码:
优化算法步骤见图6-3。
关键编码如下所示:
String miguHotFieldName = “DFN_DOWNLOAD_COUNT”;//咪咕指数值相匹配字段名值 try {
miguHotFieldName =
configer ,getValue(req.getReqMode().toString(), req
,getProvinceCode(), req.getCityCode(),
CONFIG SCOPE,“music search migu fieldName”);
56
} catch (Exception e) { miguHotFieldName = ,,DFN_DOWNLOAD_COUNT”;
logger.error(“music sort field name error: “,e);
}
float singerHotFactor = 0.0008f; //女歌手人气指数值权重值因素 try {
String singerHotFactorStr = configer.getValue(req.getReqMode().toString(), req
,getProvinceCode(), req.getCityCode(), CONFIG SCOPE,“music search singer hotFactor”);
singerHotFactor = new Float(singerHotFactorStr).floatValue();
} catch (Exception e) {
logger .error(“获得music search singerHotFactor错误:
“,e);
}
String singeHotFieldName = “DFN_HOT_SORT”;// 女歌手人气相匹配字段名 值
try {
singeHotFieldName = configer.getValue(req.getReqMode().toString(), req
,getProvinceCode(), req.getCityCode(), CONFIG SCOPE, “music search singer fieldName”);
} catch (Exception e) {
logger.error(“music singer hot field name error: “,e); }
float newSongHotFactor = 0.0008f; //女歌手人气指数值权重值因素 try {
String newSongHotFactorStr = configer.getValue(req.getReqMode().toString(), req
,getProvinceCode(), req.getCityCode(), CONFIG SCOPE,”music_search_newSong_hotFactor”);
newSongHotFactor = new Float(newSongHotFactorStr).floatValue();
} catch (Exception e) {
logger .error(“获得music search newSongHotFactor错误:
“,e);
}
57
经典案例见图6-4。
搜崇結果 检索”業棋”,技到相关内容S954条:
女歌手C4970) | 音乐专辑(919) | 标识(0) | 歌曲歌词 | ||||||
E | 01 | 后会无期〔后会无期同名的主题歌) | g.e.m.即紫棋 | «影片«后会无期» :” | ► ■ | ▼ | es | ||
El | 02 | 心的节奏感〔德芙广告曲) | g.e.m.耶紫棋 | «心的节奏» | ► * | 土 | cs | ||
El | 03 | 对你有感觉 | g-Q.m.即紫棋 | ► < | 土 | M | |||
El | 04 | 泡沫塑料(2014巡回演唱版)画0 | g-e.m.即紫 棋 | 3曲: 1发售》 | ► < | 土 | ¥ | 回 | |
E | 05 | 喜戏你(我是歐手)同3 | g.e.m.弔紫棋 | «我是歌手第二季第六期» | ► a | cs | |||
El | 06 | 你不是真正的快乐俄是哥次手) | g.e.m.耶紫棋 | «我是散手第二季半决器» | A冬 | 土 | cs | ||
S | 07 | 3包沫 | g-e.m.即紫 棋 | « Xposed >? | ► < | 土 | ♦ | a | |
D | 08 | 你把我灌醉曲風 | g-e.m.即紫 棋 | 底你将我灌酔汚 | ► < | 土 | ¥ | 巳 | |
IO | 09 | 龙清风(我是歌手) | g.e.m.弔紫棋 | «我是歌手第二季第九期» | ► a | ▼ | a | ||
El | 10 | 回忆的沙漏E3S1 | g.e.m.即紫棋 | «G.E.M.» | ► * | 土 | cs |
图6-4結果排列经典案例
根据对被检索女歌手的咪咕人气指数值、音乐/音乐专辑综合性指数值、最新歌曲股价指数、热 歌加权指数等重要主要参数开展综合性测算,依据测算优秀率得到排列結果并展现给客户。
3.百度搜索回到有关编码:
领域模型见图6-5。
图6.-5結果回到经典案例
关键编码如下所示:
public List<SearchingInfoBean> searchSIB (Query query, MineRequest req,
String infoType, int begin, int num, boolean useSorter) {
List<SearchingInfoBean〉 list = null;
Searcher searcher = null;
try {
58
searcher = usm.getUserSearcher(req);
list = new ArrayList<SearchingInfoBean>();
QT qt = searchQT(query, searcher, req, infoType, useSorter, begin
num);
TopDocs tds = (qt == null ? null : qt.getTds());
if (tds != null && tds.scoreDocs != null) {
String handlerName = configer.getValue(req.getReqMode()
.toString(), req.getProvinceCode(), req.getCityCode(),
CONFIG_SCOPE,
MergeStrategyFactory. CONF_KEY_MERGE_STRATEGY);
ISameSongMergeHandler ssmh = mergeFactory .getMergeHandler(handlerName) ;
int temp hitslength = tds.scoreDocs.length;
if (logger.isDebugEnabled()) {
logger .debug(“检索SIB結果” temp hitslength “条”); logger .debug(“一共有 SIB 結果” tds. totalHits “条”);
}
//只留运载范畴内的結果到SearchingInfoBean中
Document doc = null;
// begin比temp_hitslength大,表明沒有結果了
if (begin >= temp hitslength) {
return list;
}
SearchingInfoBean sib;
for (int i = begin;; i ) {
if (i >= temp hitslength) {
/*沒有音乐了 */
break;
}
doc = searcher.doc(tds.scoreDocs[i].doc);
sib = new SearchingInfoBean();
sib.fromDoc(doc) ;
sib.setNumOfMax(i) ; sib.setMaxResultCount(tds.totalHits); try {
list = ssmh.merge(req, list, sib);
if (list.size() >= num 1) {
59
list.remove(list.size() – 1);
break;
(logger.isDebugEnabled()) {
logger .debug(“合拼后获得SIB結果:” list.size() ”条”);
catch (Exception e1) {
logger ,error(“searchSib:”, e1);
return null;
finally {
searcher = null;
return list;
经典案例见图6-6。
搜寮結果 检索”小苹果”,寻找有关内谷27條:
01小苹果匯诃 | 1 | 快子兄弟 | 《老奥孩之猛龙过江电翌… | ► | ||
S | 02小苹果 | 王羽泽 | 話小苹果}} | ► | ||
03小苹果 | 肖光伟 | …—竺雪 | ► | 卑岀♦ & | ||
S | 04青苹果乐园(2012台北市巡回演唱版) | 菜敬管 | 《弟散脖同名的全球巡回演出潢… | ► | a ± v ei | |
05苹果光 | 丁当 | 懐迷上的* | ► | a ± v ej | ||
S | 06 —颗iPhone囲冒 | 五月天 | 《世间情歌& | ► | 卑出,ei | |
B | 07 一颗苹果(Fve版)風1 | 五月天 | 《五月天《创造》台北小巨蛋… | ► | a ± v ej | |
S | 08小苹果(手风琴独奏) | 轻音乐 | 《单曲发行》 | ► | 卑出♦ g | |
09 士多啤梨iPhone橙画 | 谷祖儿 | 《Omithes (The Birds)» | ► | |||
io感情iPhone(国语片)S1 | 答祖儿 | …爲” | ► | 卑出♦的 |
女歌手(9)
专損(12)
标识(0)
歌曲歌词
图6-6检索回到经典案例
音乐(249)
4.二分词作用编码精彩片段:
关键领域模型见图6-7。
60
图6-7关键领域模型展现
回到二分解决
后的百度搜索
关键编码如下所示:
*转化成二分词query-音乐
*
- @param input
- @return
*/
public Query createDichoQSong(String input) (
BooleanQuery query = new BooleanQuery();
boolean hasQ = false;
BooleanQuery queryExt = null;
boolean useExtQ = MineTools.isAllEngWord(input);
if (useExtQ) (
queryExt = new BooleanQuery();
//如果英文中有缩写,那麼开展更换
if (engSongNameStdFilter.shouldBeStandarded(input)) (
input = engSongNameStdFilter.standardEngWord(input);
}
}
TokenStream stream = new CJKTokenizer(new StringReader(input));
String termS = null;
try (
try (
// get the TermAttribute from the TokenStream
TermAttribute termAtt = (TermAttribute) stream .addAttribute(TermAttribute.class);
stream.reset();
while (stream.incrementToken()) (
termS = termAtt.term();
if (TextTools. isEmpty(term S)) (
continue;
}
query
61
.add(
new TermQuery(
new Term(
IndexStandard.DFN_PERFORMANCE_NAME_DICHOTOMY;
termS)),
BooleanClause.Occur.SHOULD);
hasQ = true;
if (useExtQ) (
queryExt.add(new TermQuery(new Term(
IndexStandard.DFN_PERFORMANCE_NAME_DICHOTOMY,
termS)), BooleanClause.Occur.MUST);
}
}
//当键入为全外文时,提升音乐二分query的boost,那样可以处理的问题是:
// 键入 it happen,获得結果 elisabeth withers 的《it can happen》
// 而不是 it takes presidents 的《loose it tonight》
if (useExtQ) (
query.add(queryExt, BooleanClause.Occur.SHOULD);
query.setBoost(dichoSongEnQryBoost);
} else (
query.setBoost(dichoSongChQryBoost);
}
} catch (IOException e) (
e.printStackTrace();
logger.error(e.getMessage());
}
if (hasQ) (
return query;
} else (
return null;
}
} Anally (
if (null != stream) (
try (
stream.end();
stream.close();
} catch (IOException e) (
stream = null;
}
}
}
}
经典案例见图6-8。
62
女歌手(12) | 音乐专辑(125) | 标识(0) | 歌曲歌词 |
匚1 01东风破 E2U | 萧敬腾 | «叶惠美》 ► e ± cd | |
0 02青瓷画 | 萧敬腾 | «我很忙》 ► a ± (3 | |
0 03明明很爱你画曲1 | 萧敬腾 | «十二新作》 ► ♦ ± V (3 | |
0 04尘世容桟画 | 萧敬腾 | « 二大作》 ► ♦ ± v ca | |
□ 05马郁兰団H | ■ | 萧敬腾 | «依然范特西》 ► a ± v d |
□ 06烟花易冷岛風 | 周杰伦 | «跨时代》 ► a ± v cd | |
D 07说好的幸福呢期 | 萧敬腾 | «魔杰座》 •阜土 “(2 | |
H 08稻花香巨E1 | 1 | 萧敬腾 | «魔杰座》 ► < ± cd |
El 09彩虹画]
周杰伦 《我很忙》
搜京結果 检索”我要萧敬腾的东风破。寻找有关內容51晓:
图6-8二份词经典案例
最先依据客户键入的检索信息内容分析出歌手名”萧敬腾”和歌曲歌词”东风破”, 然后依据女歌手和音乐的重要信息内容开展关键词搜索,最后完成結果精确配对。
以上就是统一搜索平台功能设计-导哥seo培训-东泽seo的全部内容,