lucene-搜索过程源码解析-Weight树

1.总述  IndexSearch全过程源码分析--->生成weight树:负责的是query权重及生成score树
IndexSearch ---> search(createWeight(query), filter, n, sort)
	|--createWeight(query)  |实际为生成Weight树
		 |--return query.weight(this);
	
2.创建weight树总过程
query.weight(this)
	|--Query query = searcher.rewrite(this);  |重新解析Query,将Query生成为单个可供直接查询的Query
	|--Weight weight = query.createWeight(searcher);
	|--float sum = weight.sumOfSquaredWeights();  |计算sum分值
	|--float norm = getSimilarity(searcher).queryNorm(sum); |获取标准因子
	|--weight.normalize(norm);   |标准化
	|--return weight;  |返回weight权值树

3.重写Query对象,生成Query树
IndexSearcher.rewrite(Query original) |重写Query对象,主要实现拆分
	|--for (Query rewrittenQuery = query.rewrite(reader); rewrittenQuery != query; rewrittenQuery = query.rewrite(reader)) |重写直至不能再拆分
		 |--query = rewrittenQuery;
		 		|--eg1:BooleanQuery.rewrite(reader) 实现
		 		 	 |--for (int i = 0 ; i < clauses.size(); i++)
		 								
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值