前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Lucene7 的加权检索(Boost)

Lucene7 的加权检索(Boost)

作者头像
Sheldon.Lee
发布2020-05-25 17:24:51
1.4K0
发布2020-05-25 17:24:51
举报
文章被收录于专栏:NLP-知识图谱NLP-知识图谱

总体来说,lucene可以设置两个阶段的权重:

  • 建立索引时对文档设置权重:

然而,在lucene 7.0发布时移除了索引时boost:

LUCENE-6819: Index-time boosts are not supported anymore. As a replacement, index-time scoring factors should be indexed into a doc value field and combined at query time using eg. FunctionScoreQuery.

http://archive.apache.org/dist/lucene/java/7.0.0/changes/Changes.html#v7.0.0.api_changes

  • 检索时,对检索词设置权重:

而网上一大堆的答案都是 Query.setBoost() 或者 Query.createWeight() 然而:

LUCENE-6590: Query.setBoost(), Query.getBoost() and Query.clone() are gone. In order to apply boosts, you now need to wrap queries in a BoostQuery. (Adrien Grand)

http://archive.apache.org/dist/lucene/java/6.6.0/changes/Changes.html

所以使用 BoostQuery 进行一下包装就好了:

TermQuery termQuery = new TermQuery(term); BoostQuery query =new BoostQuery(termQuery, 0.5f); // 若使用 BooleanQuery 进行查询时: booleanQueryBuilder.add(query, BooleanClause.Occur.SHOULD); BooleanQuery booleanQuery = booleanQueryBuilder.build(); log.info("lucene search terms:{}", booleanQuery.toString("question"));

这时候日志应该记录如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年4月8日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档