搜索优化

前段时间分配了个搜索优化的任务,虽对搜索有点了解,但对优化方面及相关算法知之甚少,可事情得做啊,于是埋头研究,经过一段时间的验证,领导对效果终归还算满意,下面我就给巴拉巴拉一下吧

1、优化任务

帮助用户快捷方便地找到满意的博客

    -----站在用户的角度
    -----用户满意的博客:符合用户意愿、博客质量好

2、优化探索

1)符合用户意愿

用户发出的每个搜索请求背后都隐含着潜在的搜索意图,如果搜索引擎能够根据查询词汇自动找出背后的用户搜索意图,然后针对不同的意图,提供不同的检索方法,将更符合用户意图的搜索结果排在前列,无疑会增加搜索引擎用户的搜索体验。目前搜索引擎已经部分实现了这种搜索模式,比如用户搜索数据库连接 java”的时候会主动将java语言实现的连接数据库的博客列在最前面

做法有三:

第一、  使用LDA对博客进行聚类,聚出N类后,把每篇博客映射到N个分类中,打上分数最高的M个类,记录并建到索引中;用户搜索时,首先把用户意图映射到N个分类上,取出最可能的分类作为用户意图的意愿分类,然后进行搜索;

第二、  改写用户查询,先按严格的查询获取用户记录,然后按宽松的查询条件进行查询;

第三、  最最后结果根据用户意愿+相似度,进行再次排序

2)博客质量好

根据运维们多年的运维经验,提取博客的几种最有代表性的属性,根据属性进行打分

根据上述(1+2)的综合分数,进行排序。

3、优化总结

上述说的是不是有点粗,我说点其中走过的路吧

1)聚合分类

聚合分类用的是LDA,也实验了w2v+kmeans,结果就是,还是LDA效果好,应该是因为LDA有个topic提取的过程。而w2v太注重每个词的语义,kmeans又只关注距离,所以少了个topic提取的过程

2)w2v的使用

为了让搜索结果更好,对搜索数据对博客标题和查询词进行相似度比较,用w2v对博客标题和查询词向量化,然后求得相似度。计算方法就是先分词,然后对分词向量化,对生成的N个向量求和得到一个向量,最后对向量使用cos求夹角,求和的过程会损失数据的特征,但是还可以忍。海明距离,simhash算出来的都太差,可能是因为这两种对短文本不太适合,后来学习到,说SimHash可以,说google的去重就用的这个,我不知道是我用的不对,还是什么原因,反正我用的SimHash也效果一般,刚才又测试了一下,感觉SimHash确实不太适合短文本,比如 "spring下载 附件(1) " 和 "spring下载 附件(2) ",距离竟然是5,按照距离不超过3的都是相似的原则,显然不太好使;而"机器学习实战 附件(1) " 和 "机器学习实战  附件(2)  "的距离是3;"机器学习实战 下载 附件(1) " 和 "机器学习实战 下载 附件(2)  "的距离是2,反正我觉得SimHash不太适合短文本


中间还有N多细节,我就不巴拉啦,总之优化就是根据最需要提升的点去优化程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值