分析器检查字段的文本,然后生成一个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. redhat6.4升级openssh至6.7

    1:简介 最近浙江电信对线上服务器进行漏洞扫描,暴露出原有的openssh有漏洞,建议升级openssh版本: 2:操作环境 Red Hat Enterprise Linux Server relea ...

  2. JAVA网站高并发解决方案

    一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单,随着互联网业务的不断丰富,网站 ...

  3. AFNetworking 与 NSURLSession

    转载自:http://blog.sina.com.cn/s/blog_8157560c0101kt7h.html 1. 也就是说在IOS 7.1 之后你想用网络请求的话有两种途径,NSUrlSessi ...

  4. C++STL学习笔记_(3)stack

    10.2.4stack容器 Stack简介 ²  stack是堆栈容器,是一种"先进后出"的容器. ²  stack是简单地装饰deque容器而成为另外的一种容器. ²  #inc ...

  5. Castle IOC容器组件生命周期管理

    主要内容 1.生命处理方式 2.自定义生命处理方式 3.生命周期处理 一.生命处理方式 我们通常创建一个组件的实例使用new关键字,这样每次创建出来的都是一个新的实例,如果想要组件只有一个实例,我们会 ...

  6. ASP.NET基础之HttpModule 、HttpContext、 HttpHandler

    http://www.cnblogs.com/wujy/p/3261141.html http://www.cnblogs.com/wujy/p/3264475.html http://www.cnb ...

  7. Linux环境下oracle创建和删除表空间及用户

    #su - oracle $ sqlplus /nolog SQL> connect / as sysdba --//创建临时表空间 create temporary tablespace te ...

  8. linxu php连接sqlserver

    今天linux的yum也不能用,用的是第三方的yum源,yum安装好后更新header又花了很长时间. 记得安装指定安装目录要用 --with-php-config=PATH命令. CentOS 6安 ...

  9. pic/at89c2051 programmer

    http://dangerousprototypes.com/forum/viewtopic.php?t=170 It looks like the PICKIT2 uses a small boos ...

  10. http_load测试Web引擎性能

    1:下载http_load #wget -c http://soft.kwx.gd/tools/http_load-12mar2006.tar.gz 2:解压并编译http_load tar xzvf ...