Solr高亮显示highlight的三种实现

高亮显示在搜索中使用的比较多,比较常用的有三种使用方式,如果要对某field做高亮显示,必须对该field设置stored=true
      第一种是普通的高亮显示Highlighter,根据查询的docIdSet,获取Documents,并获取当前document的需要高亮的field的value,根据query的term和该field的value做匹配算法
       第二种是,快速高亮显示FastVectorHighlighter,效率比普通的高亮显示要高;需要定义termvector(占用空间和IO),包括position和offset,
根据query term的termvector到field value中做快速的定位标记,进而实现快速的高亮显示
        第三种是在solr外部做高亮显示,由于高亮显示需要对field设置为store=true,所有对于单节点数据量比较大并且该字段比较大的话,会消耗大量的IO操作,那么可以把该字段存储在另外的地方,比如Hbase,在外部做高亮显示的匹配。

转载:http://blog.csdn.net/yangbutao/article/details/17472961

Solr高亮显示highlight的三种实现

时间: 2024-10-21 20:09:42

Solr高亮显示highlight的三种实现的相关文章

将项目部署到tomcat的三种方法

2014年8月初8    星期五 又到星期五了,可以轻松的敲点东西,不担心睡太晚起不来,或者起来后上班打瞌睡. 由于近期学习了solr相关的知识,部署solr项目到tomcat上的方式很多,包括官方的等.我自己也找了中非官方的方法,感觉很好.而且以前用MyEclipse开发,出错很少,现在用Eclipse所以部署项目后在后台调用user.dir的时候出错,试了一下午也没事出来,而且越试越想试,但是带我的人不让我弄了,他帮我弄,让我干其他任务,我都怀疑是不是他也和我一样就喜欢干这种事情,所以自己去

[cocos2dx笔记015]关于cocos2dx Button三种状态说明

经过几天的填坑,终于将现有的项目由cocos2dx 2.2.2移到cocos2dx 3.2,差点放弃3.2了,但在最后一刻,又把坑填平了. cocos2dx 2.x到3.x是一个巨大的变化,可以算是完全不同.以前的类名,全是CC开头的,现在全部去掉了.很多enum都改用enum class了 所以,你知道2.x,对不起,你比小白学习3.x更难.你用2.x的做法用在3.x,那就全是坑了... 言归正传, 2.x的时候,按钮设置为Disabled的时候,是看不见.3.x的是没有禁用状态的,但是不会响

转载:Linux的vim三种模式

一般模式:在Linux终端中输入“vim 文件名”就进入了一般模式,但不能输入文字. 编辑模式:在一般模式下按i就会进入编辑模式,此时就可以写程式,按Esc可回到一般模式. 命令模式:在一般模式下按:就会进入命令模式,左下角会有一个冒号出现,此时可以敲入命令并执行. 转载网址:http://anxiongbo.blog.51cto.com/805770/163582 一. VIM高亮 进入vim后,在普通模式下输入如下命令,开启php代码高亮显示 :syntax enable :source $

第三章 C++的三种基本控制结构

0x C++提供的三种基本控制结构 顺序结构:按照先后顺序依次执行程序中的语句 选择结构:按照给定条件有选择地执行程序中的语句 循环语句:按照给定规则重复地执行程序中的语句 1x 第一节 C++语句 语句以分号表示结束 六种C++语句 声明语句:用于对程序中的各种实体进行声明.定义和初始化. 表达式语句:用于对程序中的数据进行具体操作和处理. 选择语句:用于实现程序的选择结构. 循环语句:用于实现程序的循环结构. 跳转语句:用于实现程序执行流程的变换. 复合语句:用于表示程序中的语句块. 2x

angularJs中关于ng-class的三种使用方式说明

在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子. 而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性值,必然只能是更换其class属性 这里有三种方法: 第一种:通过数据的双向绑定(不推荐) 第二种:通过对象数组 第三种:通过key/value 下面简单说下这三种: 第一种:通过数据的双向绑定 实现方式: function changeClass(){   $scope.className = "change2"; } <div clas

Oracle基础学习2--Oracle登录与三种验证机制

首先,Oracle安装完毕有三个默认用户 ?  Sys:数据库对象的拥有者.权限最高.password在安装的时候(口令管理)能够改变 ?  System:数据库管理员,password为manager ?  Scott:一个普通用户,password为tiger 再看连接Oracle的三种验证机制 ?  操作系统验证(具体解释见以下) ?  password文件验证 ?  数据库验证 注:前两者适用于系统用户,比方:Sys.System等:最后一个适用于普通用户.比方:Scott. 再看Ora

Binlog的三种模式

binlog模式分三种(row,statement,mixed) 1.Row 日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改,只记录要修改的数据,只有value,不会有sql多表关联的情况. 优点:在row模式下,bin-log中可以不记录执行的sql语句的上下文相关的信息,仅仅只需要记录那一条记录被修改了,修改成什么样了,所以row的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解.而且不会出现某些特定情况下的存储过程和function,以及trig

AngularJs学习——实现数据绑定的三种方式

三种方式: 方式一:<h5>{{msg}}</h5>  此方式在页面刷新的时候会闪现{{}} 方式二:<h5 ng-bind="msg"></h5> 方式三:<h5 ng-clock class="ng-clock">{{msg}}</h5> 示例代码: <!DOCTYPE html> <html lang="en" ng-app="myapp&q

三种纯CSS方法实现等高列

在这篇文章里, 我会介绍三种使用纯css的方式来实现等高列的方法.在网页布局中设置列等高是比较常见的, 所以写这篇文章就是要总结下一些优雅的纯CSS解决方案. 插图自己弄得,不喜莫喷 哈哈.. 下面介绍的三种方法都只用到了CSS , 不涉及jQuery.JavaScript计算实现的方法,所以我把它这篇文章标题设为:三种纯CSS方法实现等高列. 方法-1: 使用Margins, Paddings和 Overflow来实现 第一种方法使用margins, paddings和overflow来迫使列