方法

     public static Query TermWeighting(Query tquery,Map<String,Float>term2weight){
         BooleanQuery nquery = new BooleanQuery();
         Set<Term> terms = new HashSet<Term>();
          for(Term itr : terms){
             float weight = term2weight.get(itr.text());
             Query q =  new TermQuery(new Term(itr.field(), itr.text()));
             q.setBoost(weight); //设置权重
             nquery.add(q, BooleanClause.Occur.SHOULD);
         }
11         return nquery;
12     }

传入参数说明:

  •     tquery:经过QueryParser解析后的Query对象
  •     term2weight:计算好或人为设定的每个词的检索权重

背景

近期搜索:lucene如何设置query中不同term权重,浏览了不下百个页面和解答。

使用最多的搜索词组合如标题:Lucene Query Term Weighting

得到的信息大致如下

1、 对lucene的score公式的说明:也就是在假设query中term的tf都为1,新的query不列入df的计算,然后推导出一个vsm下的文档之间的cosine similarity;

2、 lucene如何在index阶段给不同的Document.setBoost, index或检索阶段给Filed.setBoost,以及检索阶段给Query.setBoost

  吐槽1: 对于刚开始接触lucene的同学,对Query.setBoost <--- TermQuery.setBoost时略微有些迷茫的;

  吐槽2: 额外, Clause的概念让人有些迷茫,为何不直接叫QueryTerm这种呢?

3、 对于TermWeight树的解释,基本同1;


乱入

上述都不能很好的解答我的需求,连stackoverflow中有些问答也是。

但,这跟初学者没有熟识lucene也有关。

抑或说,是我搜索时用词的姿势不对。

Lucene Query Term Weighting的更多相关文章

  1. lucene query

    在lucene的搜索中,最重要的无疑就是对query的理解和掌握了.这里扒拉一下源码(版本3.5.0)的query和query实现: query是一个抽象类,实现类有以下几个: termQuery m ...

  2. lucene 3.0.2 search 各种各样的Query类型

    http://blog.sina.com.cn/s/blog_61d2047c010195mo.html     lucene的这种各种各样的查询类型 1.TermQuery       最简单的Qu ...

  3. lucene自定义过滤器

    先介绍下查询与过滤的区别和联系,其实查询(各种Query)和过滤(各种Filter)之间非常相似,可以这样说只要用Query能完成的事,用过滤也都可以完成,它们之间可以相互转换,最大的区别就是使用过滤 ...

  4. 全文检索解决方案(lucene工具类以及sphinx相关资料)

    介绍两种全文检索的技术. 1.  lucene+ 中文分词(IK) 关于lucene的原理,在这里可以得到很好的学习. http://www.blogjava.net/zhyiwww/archive/ ...

  5. Apache Lucene(全文检索引擎)—搜索

    目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 本项目Demo已上传GitHub,欢迎大家fork下载学习:https://gith ...

  6. Lucene搜索方式大合集

    package junit; import java.io.File; import java.io.IOException; import java.text.ParseException; imp ...

  7. 【Lucene】三个高亮显示模块的简单示例-Highlighter

    Lucene针对高亮显示功能提供了两种实现方式,分别是Highlighter和FastVectorHighlighter 这里的三个示例都是使用Highlighter: 示例代码: package c ...

  8. lucene 索引 demo

    核心util /** * Alipay.com Inc. * Copyright (c) 2004-2015 All Rights Reserved/ */ package com.lucene.de ...

  9. lucene 搜索demo

    package com.ljq.utils; import java.io.File; import java.util.ArrayList; import java.util.List; impor ...

随机推荐

  1. pt-ioprofile

    pt-ioprofile是用来观察特定进程的IO信息的. 该脚本是用shell写的,有两方面的作用: pt-ioprofile does two things: ) ) is not performe ...

  2. 使用Logstash进行日志分析

    LogStash主要用于数据收集和分析方面,配合Elasticsearch,Kibana用起来很方便,安装教程google出来很多. 推荐阅读 Elasticsearch 权威指南 精通 Elasti ...

  3. git误删文件找回方法/git版本回退方法

    使用git命令 git rm css/\*.css 我删掉了css文件夹下所有以.css结尾的文件,那么要怎样才能把文件找回来呢,下面说说方法,删掉其他的文件也是一样的方式找回. 第一步:使用git ...

  4. MVC5项目中添加Wep API

    一.查看MVC版本,决定你有没有必要看这篇文章 打开web.config,看到以下内容 <dependentAssembly> <assemblyIdentity name=&quo ...

  5. form表单的enter自动提交

    当form中只有一个文本框时并且获得焦点 按enter时,就会自动提交表单.阻止自动提交 可以添加一个隐藏的input框 <input type="text" style=& ...

  6. IOS 基础-define、const、extern、全局变量

    这里介绍一下define.const.extern的用法.优劣以及要注意的地方. 1.define 宏define是定义一个变量,没有类型信息.define定义的常量在内存中有若干个拷贝. defin ...

  7. 20145308刘昊阳 《Java程序设计》实验四 Android环境搭建 实验报告

    20145308刘昊阳 <Java程序设计>实验四 Android环境搭建 实验报告 实验名称 Android环境搭建 实验内容 搭建Android环境 运行Android 修改代码,能输 ...

  8. 一个Json结构对比的Python小工具兼谈编程求解问题

    先上代码. jsondiff.py #!/usr/bin/python #_*_encoding:utf-8_*_ import argparse import json import sys rel ...

  9. GCD的用法

    单例的实现 + (BindingRedResourceWIndow *)sharedInstance { static id sharedInstance = nil; static dispatch ...

  10. jeecms支持的freemaker标签大全

    <@e.form id="jvForm" action="o_add.do"> <@e.text label="字段名" ...