首页 > 代码库 > 07.设置相关度

07.设置相关度

为什么要设置相关度

设置相关读可以人为的影响搜索结果的排序,通过设置某一个域的boost,可以在同时出现多条匹配结果时提升排名。通过设置boost影响打分结果,boost是一个加权值(默认加权值为1.0f),它可以影响权重的计算。

设置相关度的时机

1.建立索引时设置

提升某个Document的权重,类似于竞价排名

  1. if(file_name.equals("springmvc.txt")){
  2. //设置比默认值 1.0大的
  3. field_file_content.setBoost(20.0f);
  4. }
  5. if(file_name.equals("spring_README.txt")){
  6. //设置比默认值 1.0大的
  7. field_file_content.setBoost(30.0f);
  8. }
  9. //向文档中添加Field
  10. document.add(field_file_content);

2.查询索引时设置

可以提高某个域的权重,例如seo中h1标题的权重较大

  1. //设置评分,文件名称中包括关键字的评分高
  2. Map<String,Float> boosts = new HashMap<String,Float>();
  3. boosts.put("file_name", 30.0f);
  4. // 创建查询解析器
  5. QueryParser queryParser = new MultiFieldQueryParser(fields,new StandardAnalyzer(),boosts);
  6. // 查询文件名、文件内容中包括“java”关键字的文档
  7. Query query = queryParser.parse("springmvc.txt");
  8. TopDocs topDocs = indexSearcher.search(query, 100);
  9. ScoreDoc[] scoreDocs = topDocs.scoreDocs;

07.设置相关度