Lucene 4.0 如何修改每个文档被搜索的优先级?

红薯 发布于 2013/01/20 12:22
阅读 2K+
收藏 7

需求:

假设有两个开源软件,一个是 Tomcat,另外一个是 Tomcat Native,那么用户使用 Tomcat 作为关键字搜索时,Tomcat 这个项目应该排在 Tomcat Native 之前。

在 Lucene 3.x 版本中,Document 类有一个 setBoost 方法,而 Tomcat 是推荐项目,因此我可以给 Tomcat 对应的这个 Document 对象通过 setBoost 来加分。所以在 osc 上搜 Tomcat 的时候,Tomcat 这个项目是排在最前面的。

但是 Lucene 4.0 中,Document 已经没有 setBoost 方法,改为:

  • Index-time boost by calling Field.setBoost() before a document is added to the index.
  • Query-time boost by setting a boost on a query clause, calling Query.setBoost().
该如何来实现之前在 Lucene 3.x 中的 setBoost 思路呢?

@linliangyi 你们有没有处理类似的问题?

加载中
0
林良益
林良益

按照Lucene4.0的规则,我们只能给出一个keyword filed,然后通过Field.setBoost()来提高优先级了。

对4.0的应用,我们今年Q1会开始正式立项,目前还谈不上经验,还停留在理论上,呵呵

0
YoungLiu
YoungLiu
给每个doc添加一个field,用来标志是否推荐。搜索时再按照这个field排序,sort.setSort()。
0
x
xiean

引用来自“YoungLiu”的答案

给每个doc添加一个field,用来标志是否推荐。搜索时再按照这个field排序,sort.setSort()。
我看到网上有人这么说的 You cannot call 'Document.setBoost()' in couchdb-lucene. You have to add {"boost":boost_value} when you add the field,好像和你说的差不多,只是我不知道的是lucene是不是把fieldName等于boost看成是一个特殊的field呢?
0
Rezeroer
Rezeroer
我现在也遇到 这样的问题  楼主解决啦没?
0
江边流客
江边流客
setboost是评分机制,不是优先级处理方式吧。。。
0
andyxle
andyxle
请问现在怎么解决的呢
返回顶部
顶部