分析器检查字段的文本,然后生成一个token流.在schema.xml中,分析器作为<fieldType>的一个子元素.在普通的使用当中,只有字段类型solr.TextField使用分析器.配置分析器最简单的方式就是使用一个<analyzer>元素,它的class属性是一个java的类名.  

<fieldType name="nametext" class="solr.TextField">
<analyzer class="org.apache.lucene.analysis.WhitespaceAnalyzer"/>
</fieldType>

  在这个例子中,类WhitespaceAnalyzer主要负责分析TextField类型数据的内容并发出相应的tokens.举一个简单的例子,如纯英文散文,像这样一个简单的分析器类已经足够了,但是对于字段内容,需要做更多的复合分析.

  甚至大部分的复合分析要求都能分解成一系列的独立元件.不久你就会发现,solr的distribution部分提供了很多的分词器(tokenizer)和过滤器(filter)的选择,设置一个分词器链非常的简单直接.

  举例:

<fieldType name="nametext" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.StandardFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.StopFilterFactory" />
<filter class="solr.EnglishPorterFilterFactory" />
</analyzer>
</fieldType>

  注意:包名 org.apache.solr.analysis可以直接通过solr. 来关联.

  在这个例子中,没有在<analyzer>中指定class属性.而是更多专门的类的序列连在一起构成<analyzer>,充当字段的分析器.字段的文本通过这个列表的第一个条目( solr.StandardTokenizerFactory),从最后一个标记(solr.EnglishPorterFilterFactory)出现的tokens,用于索引和查询.

分析阶段

  分析发生在两处环境当中,在建立索引的时候,当一个字段被创建,分析产生的token流被添加到索引中,为字段定义条目(term)的设置(包含 positions, sizes等等).在查询的时候,搜索的文字会被分析,产生的条目(terms)会去匹配字段索引中的条目.

  在很多时候,相同的分析用于这两个阶段-索引和查询.但是有些时候可能会有轻微的不同.

  如果提供了一个简单的如上的<analyzer>,那么它将用于索引和查询,如果你想要为每个阶段分开使用分析器,你需要在字段类型中包含两个分析器.如下:

<fieldType name="nametext" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.KeepWordFilterFactory" words="keepwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="syns.txt" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>

  在这个假设的例子中,在索引的时候,文本会被分词,然后词(tokens)转化为小写,任何没有列在文件keepwords.txt中的词(token)都会被丢弃.然后这些保留下来的词可以映射到syns.txt中词.在查询的时候,做的规范处理只是小写处理.

1.5.2 什么是Analyzer--分析器的更多相关文章

  1. Lucene全文搜索之分词器:使用IK Analyzer中文分词器(修改IK Analyzer源码使其支持lucene5.5.x)

    注意:基于lucene5.5.x版本 一.简单介绍下IK Analyzer IK Analyzer是linliangyi2007的作品,再此表示感谢,他的博客地址:http://linliangyi2 ...

  2. ES系列六、ES字段类型及ES内置analyzer分析

    一.背景知识 在Es中,字段的类型很关键: 在索引的时候,如果字段第一次出现,会自动识别某个类型,这种规则之前已经讲过了. 那么如果一个字段已经存在了,并且设置为某个类型.再来一条数据,字段的数据不与 ...

  3. H3 BPM引擎API接口

    引擎API接口通过 Engine 对象进行访问,这个是唯一入口. 示例1:获取组织机构对象 this.Engine.Organization.GetUnit("组织ID"); 示例 ...

  4. 一步步开发自己的博客 .NET版(5、Lucenne.Net 和 必应站内搜索)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  5. lucene全文检索---打酱油的日子

    检索内容,一般的程序员第一时间想到的是sql的like来做模糊查询,其实这样的搜索是比较耗时的.已经有lucene帮我们 封装好了,lucene采用的是分词检索等策略. 1.lucene中的类描述 I ...

  6. Lucene教程(转)

    Lucene教程 1 lucene简介1.1 什么是lucene    Lucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来 ...

  7. Solr入门之(3)常用概念说明(持续补充):

    由于solr底层使用lucene,所以很多概念与lucene相同,下面是几个常用的概念: * Document:一个要进行索引的单元,相当于数据库的一行纪录,任何想要被索引的数据,都必须转化为Docu ...

  8. lucene教程简介

    1 lucene简介 1.1 什么是lucene     Lucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是 ...

  9. .NET 面试基本技术整理

    这篇文章主要 整理出来的大部分公司需要的技术 以及一些学习链接,进行恶补一下,以免面试官考倒你 其中也整理了一些面试题需要的可以点击链接 需要掌握的技术 基础概念需要 面向对象 OOD/OOP OOD ...

  10. Luncene 学习入门

    Lucene是apache组织的一个用java实现全文搜索引擎的开源项目. 其功能非常的强大,api也很简单.总得来说用Lucene来进行建立 和搜索和操作数据库是差不多的(有点像),Document ...

随机推荐

  1. 转】MyEclipse使用总结——MyEclipse中配置WebLogic12c服务器

    原博文出自于:http://www.cnblogs.com/xdp-gacl/p/4142495.html 感谢! MyEclipse中配置WebLogic12c服务器的步骤如下: [Window]→ ...

  2. python知识点 07-11

    python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 python的 nonlocal关键字用来在函数或其他作用域中使用 ...

  3. java之四大皆空

    SE中的所有空的情况: 第一空:定义变量,变量没有值不能使用,不能打印 public class DiDaJieKong01 { public static void main(String[] ar ...

  4. codeforces 644A Parliament of Berland

    A. Parliament of Berland time limit per test 1 second memory limit per test 256 megabytes input stan ...

  5. uva 10056 - What is the Probability ?(概率)

    题目连接:uva 10056 - What is the Probability ? 题目大意:给出n和p以及m,表示有n个人在丢色子, 谁先丢到某个值就表示胜利,每个人丢到的胜利数值的概率都为p,问 ...

  6. java(2014)实现对mysql数据库分页的代码

    package util; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultS ...

  7. Castle IOC容器内幕故事(上)

    主要内容 1.WindsorContainer分析 2.MicroKernel分析 3.注册组件流程 一.WindsorContainer分析 WindsorContainer是Castle的IOC容 ...

  8. 复选框输入Android Studio 如果修改LogCat的颜色,默认全是黑色看着挺不舒服的

    今天一直在查找复选框输入之类的问题,上午正好有机会和大家分享一下. 怎么找到并表现LogCat这里就不需要再讲了吧,主要说一下本篇的主题,如何修改他的颜色 .我们在使用Eclipse的时候应该都用过L ...

  9. MySQL 备份恢复

    1:备份常用工具: mysqldump, xtrabackup mysqldump: 原生数据导出工具,以sql的形式导出保存 xtrabackup: percona团队提供的备份工具,基于文件系统的 ...

  10. VS2013 安装phonegap

    https://www.microsoft.com/en-us/download/details.aspx?id=40783