欢迎来到天天文库
浏览记录
ID:10775926
大小:142.00 KB
页数:9页
时间:2018-07-08
《19 lucene学习总结之七:lucene搜索过程解析(4)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2.4、搜索查询对象 2.4.1.2、创建Weight对象树BooleanQuery.createWeight(Searcher)最终返回returnnewBooleanWeight(searcher),BooleanWeight构造函数的具体实现如下: publicBooleanWeight(Searchersearcher){ this.similarity=getSimilarity(searcher); weights=newArrayList(clauses.size()); //也是一个递归的过程,沿着新的Query
2、对象树一直到叶子节点 for(inti=0;i3、rity(searcher); //此处计算了idf idfExp=similarity.idfExplain(term,searcher); idf=idfExp.getIdf();}//idf的计算完全符合文档中的公式: publicIDFExplanationidfExplain(finalTermterm,finalSearchersearcher){ finalintdf=searcher.docFreq(term); finalintmax=searcher.maxDoc(); finalfloatidf=idf(df,max); 4、returnnewIDFExplanation(){ publicfloatgetIdf(){ returnidf; }};}publicfloatidf(intdocFreq,intnumDocs){ return(float)(Math.log(numDocs/(double)(docFreq+1))+1.0);}而ConstantScoreQuery.createWeight(Searcher)除了创建ConstantScoreQuery.ConstantWeight(searcher)对象外,没有计算idf。5、由此创建的Weight对象树如下: weight BooleanQuery$BooleanWeight (id=169) 6、 similarity DefaultSimilarity (id=177) 7、 this$0 BooleanQuery (id=89) 8、 weights ArrayList (id=188) 9、 elementData Object[3] (id=190) 10、------[0] BooleanQuery$BooleanWeight (i11、d=171) 12、 13、 similarity DefaultSimilarity (id=177) 14、 15、 this$0 BooleanQuery (id=105) 16、 17、 weights ArrayList (id=193) 18、 19、 elementData Object[2] (id=199) 20、 21、------[0] ConstantScoreQuery$ConstantWeight 22、(id=183) 23、 24、 queryNorm 0.0 25、 26、 queryWeight 0.0 27、 28、 similarity DefaultSimilarity (id=177) 29、 30、 //ConstantScore(contents:apple*) 31、 32、 this$0 Consta33、ntScoreQuery (id=123) 34、 35、------[1] TermQuery$TermWeight (id=1
3、rity(searcher); //此处计算了idf idfExp=similarity.idfExplain(term,searcher); idf=idfExp.getIdf();}//idf的计算完全符合文档中的公式: publicIDFExplanationidfExplain(finalTermterm,finalSearchersearcher){ finalintdf=searcher.docFreq(term); finalintmax=searcher.maxDoc(); finalfloatidf=idf(df,max);
4、returnnewIDFExplanation(){ publicfloatgetIdf(){ returnidf; }};}publicfloatidf(intdocFreq,intnumDocs){ return(float)(Math.log(numDocs/(double)(docFreq+1))+1.0);}而ConstantScoreQuery.createWeight(Searcher)除了创建ConstantScoreQuery.ConstantWeight(searcher)对象外,没有计算idf。
5、由此创建的Weight对象树如下: weight BooleanQuery$BooleanWeight (id=169)
6、 similarity DefaultSimilarity (id=177)
7、 this$0 BooleanQuery (id=89)
8、 weights ArrayList (id=188)
9、 elementData Object[3] (id=190)
10、------[0] BooleanQuery$BooleanWeight (i
11、d=171)
12、
13、 similarity DefaultSimilarity (id=177)
14、
15、 this$0 BooleanQuery (id=105)
16、
17、 weights ArrayList (id=193)
18、
19、 elementData Object[2] (id=199)
20、
21、------[0] ConstantScoreQuery$ConstantWeight
22、(id=183)
23、
24、 queryNorm 0.0
25、
26、 queryWeight 0.0
27、
28、 similarity DefaultSimilarity (id=177)
29、
30、 //ConstantScore(contents:apple*)
31、
32、 this$0 Consta
33、ntScoreQuery (id=123)
34、
35、------[1] TermQuery$TermWeight (id=1
此文档下载收益归作者所有