首页 新闻 会员 周边

类似百度,搜索关键字,会在搜索结果中标示关键字是怎么实现的

0
[待解决问题]

类似百度,如搜索“fastreport报表”关键字,会在搜索结果中标示关键字

SmileZhen的主页 SmileZhen | 菜鸟二级 | 园豆:236
提问于:2016-04-19 20:02
< >
分享
所有回答(3)
0

结果输出的时候你已经拿到这个元素的所有数据了.然后也知道了所有分词结果.这时候你自己可以拿分词结果在数据库匹配.找到关键字所在位置.

吴瑞祥 | 园豆:29449 (高人七级) | 2016-04-19 21:00
0

 建议使用lunce 

Company | 园豆:32 (初学一级) | 2016-04-19 23:59
0

这是使用搜索引擎实现的,可以理解为:

首先,百度会抓取外部的数据-->分解这些数据成为一个一个的关键词-->存储关键词与外部数据的关系-->等待用户搜索

然后,你在百度的搜索框中搜索关键词-->分解你的搜索成为一个一个的关键词(因为有可能你搜的是一句话)-->查询相关的文档-->按照某种算法进行排序(一般是TF-IDF,可以百度下)返回给你

最后吐槽下无良的商家:因为正常返回的结果是与你的搜索相关度相关的,但是百度会修改算法,谁给他钱,就把谁排在前面,这就是竞价排名!所以才会出现那么多的广告!

实现这种技术的框架有很多,底层可以使用Lucene实现,.net和java都有版本!基于他们有很多开源的产品,比如solrelasticsearch,都可以实现额外的一些功能或者封装一些高级的玩法、

xingoo | 园豆:711 (小虾三级) | 2016-04-20 09:02

谢谢,请问怎么分解这些数据成为一个一个的关键词?是不是应该要有个关键词库啊

支持(0) 反对(0) SmileZhen | 园豆:236 (菜鸟二级) | 2016-04-20 10:00

@SmileZhen: 

恩,没错,分词也是一种专门的技术。有很多开源的分词器,比如IK,庖丁。

支持(0) 反对(0) xingoo | 园豆:711 (小虾三级) | 2016-04-20 13:12

@xingoo: 你好,在请教一下:这样的话是否要经常更新索引。比如新增一篇文章就需要新增同时更新所有已生成的索引,还是只要新增就可以?同理,修改一篇文章呢?用的是Lucene。博客园的找找看用的是什么

支持(0) 反对(0) SmileZhen | 园豆:236 (菜鸟二级) | 2016-04-20 17:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册