lucene搜索结果如何结合PR技术实现优化?
chencang
2008-07-26
最近搭建了一个基于lucene的实验平台,但是用lucene默认搜索结果排序技术得到的排名是不尽如人意的。所以想结合PageRank技术来优化下网页的排名。如果每个网页的pr值都已经计算出来了,我不知道如何将它结合到lucene里面,是要修改lucene源代码,然后在打包成新的jar再来放到工程中去应用吗?
你们是如何对搜索结果进行优化的? 提供点建议给我吧,谢谢。 ![]() |
|
amw_demon
2008-07-28
估计得重新写 一下lucene的评分部分。
|
|
chester60
2008-07-28
简单的做法,索引时根据每个页面的rank值,设定一定的boost。
正规的做法要改动score类,可以做简单的也可以做复杂的,不过好的算法很难找,目前也在探索中。 |
|
imjl
2008-07-28
PR真的适合吗?
我觉得它只适合google,baidu这样的搜索,,不适合垂直性的搜索排序 |
|
chencang
2008-07-28
chester60 写道 简单的做法,索引时根据每个页面的rank值,设定一定的boost。
正规的做法要改动score类,可以做简单的也可以做复杂的,不过好的算法很难找,目前也在探索中。 谢谢你。 简单的SetBoost方法需要重新做索引,如果索引已经建立好了的,并且数据量非常大的话,是一件麻烦的事情。 重改score类就是要修改源代码,我原先也想这么做的,可是我ant不太懂,根据源码里面提供的build.xml文件重新生成新的jar包没成功。 另外我昨天深夜也搜索到几个方法,lucene包里的search.function下有个CustomScoreQuery类,据说可以通过实现这个类来实现add-pagerank 。 官方的一个解释是 引用 Custom Score queries - allowing to set the score of a matching document as a mathematical expression over scores of that document by contained (sub) queries.
大家可以看这个页面《How to add PageRank score with lucene's relevant score in sorting》地址是: http://www.nabble.com/How-to-add-PageRank-score-with-lucene's-relevant-score-in-sorting-td17509217.html里面讨论了上面几种方法,各有利弊吧。 我准备看看第三种方法,大家有兴趣的也仔细研究下吧。 |
|
chencang
2008-07-28
imjl 写道 PR真的适合吗?
我觉得它只适合google,baidu这样的搜索,,不适合垂直性的搜索排序 我做的不是垂直型的,我做的是和google、百度这些差不多的网页搜索实验,个人爱好, ![]() 没做过垂直型搜索,不知道适合不适合。 |
|
chester60
2008-07-29
等着看报告
![]() |
|
chencang
2008-07-30
实验做出来证明是有效果的。
比如做的一个校园网的搜索引擎,搜索学校名字的时候主页肯定要在第一个,至少要在第一页吧;如果按照lucene的原始得分计算方式,是不可能排在第一个的,也不可能排在第一页的结果里,甚至你翻N页也不会发现。 而加入了PR值之后(目前用的是最简单的document.setBoost(pr)方法),经过测试在2000个文档里是排在第一位的,但是在10w或者更多的文档中就没有排在第一位,排在了第5位,就这样的话,效果也算是提高了; 但是也证明了一个问题,仅仅有pr值还是不够的,还需要其他的评分因素加进来,所有因素综合起来才能起到更好的排序效果。就像google说的,排序涉及到的因素很多很多,pr值不过是其中一个核心而已。 但是目前我不知道还有其他什么好的因素来加入进来使得排序效果更好,大家再给点建议吧或者有什么资料方面的我去看看 ![]() |
|
chester60
2008-07-30
排序技术是一个搜索引擎的核心技术之一,肯定不会有太多的资料的。主要看需求了,不同的需求有不同的解决办法。作为通用搜索引擎,肯定要记录网站PR值的变化,还有网站的刷新频率,访问量,点击次数等数据,然后还要经过一些数据挖掘方面的处理才是正规的搜索结果。
|
|
dknypxt
2008-09-08
定制自己的评分公式就行,稍改下原代码
|