07.设置相关度
为什么要设置相关度
设置相关读可以人为的影响搜索结果的排序,通过设置某一个域的boost,可以在同时出现多条匹配结果时提升排名。通过设置boost影响打分结果,boost是一个加权值(默认加权值为1.0f),它可以影响权重的计算。
设置相关度的时机
1.建立索引时设置
提升某个Document的权重,类似于竞价排名
if(file_name.equals("springmvc.txt")){
//设置比默认值 1.0大的
field_file_content.setBoost(20.0f);
}
if(file_name.equals("spring_README.txt")){
//设置比默认值 1.0大的
field_file_content.setBoost(30.0f);
}
//向文档中添加Field
document.add(field_file_content);
2.查询索引时设置
可以提高某个域的权重,例如seo中h1标题的权重较大
//设置评分,文件名称中包括关键字的评分高
Map<String,Float> boosts = new HashMap<String,Float>();
boosts.put("file_name", 30.0f);
// 创建查询解析器
QueryParser queryParser = new MultiFieldQueryParser(fields,new StandardAnalyzer(),boosts);
// 查询文件名、文件内容中包括“java”关键字的文档
Query query = queryParser.parse("springmvc.txt");
TopDocs topDocs = indexSearcher.search(query, 100);
ScoreDoc[] scoreDocs = topDocs.scoreDocs;