首先,不知道大家在前面的例子中没有试着搜索文本串,就是在第二节,我们添加了很多文档。如果字段值是一个文本。你如果只搜索这个字段的某个单词,是不是发现搜不到?

这就是因为我们没有配置Analyzer,因此在搜索的时候会“全匹配”。可以从直观感觉上理解为SQL的  like和= 的区别。

通过前面这段引文,我们就能知道:Analyzer就是分析我们的文本的。

一般来说:solr.TextField类型的字段才需要分析器。

最简单的配置分析器的如下:

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

其实分析器(Analyzer)还可以包括一个分词器(Tokenizer)和多个过滤器(filter),这2个东西,是为了实现更复杂的场景,我们后续再讲。

分析器一般出现在2个环境:建索引(index)和查询(query),大多数情况下这2个场景的分析过程都是一样,也就是说用的是相同的分析器。但是,你仍然可以为2个不同的阶段指字不同的分析器:

  1.  
    <fieldType name="nametext" class="solr.TextField">
  2.  
    <analyzer type="index">
  3.  
    <tokenizer class="solr.StandardTokenizerFactory"/>
  4.  
    <filter class="solr.LowerCaseFilterFactory"/>
  5.  
    <filter class="solr.KeepWordFilterFactory" words="keepwords.txt"/>
  6.  
    <filter class="solr.SynonymFilterFactory" synonyms="syns.txt"/>
  7.  
    </analyzer>
  8.  
    <analyzer type="query">
  9.  
    <tokenizer class="solr.StandardTokenizerFactory"/>
  10.  
    <filter class="solr.LowerCaseFilterFactory"/>
  11.  
    </analyzer>
  12.  
    </fieldType>

同过 type来指阶段。

Tokenizer:

分词器,从字面意思都可以理解,就是将句子拆成一个个的词(或者是词组),比如A B C D,可以拆成A,B,C,D4个单独的单词,也有可能拆成AB,CD  或者其它。。。。 这个就看你分词规则了。

使用如下:

  1.  
    <fieldType name="text" class="solr.TextField">
  2.  
    <analyzer>
  3.  
    <tokenizer class="solr.StandardTokenizerFactory"/>
  4.  
    </analyzer>
  5.  
    </fieldType>

值 得注意的是:这里配的class是Factory,而不是真正的分词器,他是通过工厂类来创建分词器实例的。所有的工厂类,必须实现org.apache.solr.analysis.TokenizerFactory

工厂的产出物,也必须派生至:org.apache.lucene.analysis.TokenStream

Filter:

就是经过Tokenizer分词之后,再再行的继续处理,比如全转成小写,时态处理, 去掉语气词等。。。

solr学习之六--------Analyzer(分析器)、Tokenizer(分词器)的更多相关文章

  1. Elasticsearch Analyzer 内置分词器

    Elasticsearch Analyzer 内置分词器 篇主要介绍一下 Elasticsearch中 Analyzer 分词器的构成 和一些Es中内置的分词器 以及如何使用它们 前置知识 es 提供 ...

  2. solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件

    昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...

  3. 我与solr(六)--solr6.0配置中文分词器IK Analyzer

    转自:http://blog.csdn.net/linzhiqiang0316/article/details/51554217,表示感谢. 由于前面没有设置分词器,以至于查询的结果出入比较大,并且无 ...

  4. Es学习第五课, 分词器介绍和中文分词器配置

    上课我们介绍了倒排索引,在里面提到了分词的概念,分词器就是用来分词的. 分词器是ES中专门处理分词的组件,英文为Analyzer,定义为:从一串文本中切分出一个一个的词条,并对每个词条进行标准化.它由 ...

  5. 【solr】solr5.0整合中文分词器

    1.solr自带的分词器远远满足不了中文分词的需求,经查使用最多的分词器是solr是mmseg4j分词器,具体整合大家可以参考 https://github.com/zhuomingliang/mms ...

  6. solr学习笔记-增加mmesg4J中文分词

    solr版本6.1.centos6.7.mmesg4j版本2.30 solr安装目录:/usr/local/solr-6.1.0 1.下载mmesg4j包: 地址:https://github.com ...

  7. Solr 安装与集成IK中文分词器

    创建wangchuanfu core 1.  在example目录下创建wangchuanfu-solr文件夹: 2.  将./solr下的solr.xml拷贝到wangchuanfu-solr目录下 ...

  8. solr 7.7.0配置中文分词器的数据类型

    <dynamicField name="*_is" type="pints" indexed="true" stored=" ...

  9. 学习笔记(三)--Lucene分词器详解

    Lucene-分词器API org.apache.lucene.analysi.Analyzer 分析器,分词器组件的核心API,它的职责:构建真正对文本进行分词处理的TokenStream(分词处理 ...

随机推荐

  1. python 在列表中添加元组元素,按照元组第一个值进行排序

    >>> import bisect >>> scores = [(, , , , 'python')] >>> bisect.insort(sco ...

  2. Java之试题

    1.面向对象编程的三大特性是什么? 2.String 和StringBuffer的区别 3.说出ArrayList,Vector, LinkedList的存储性能和特性 4.Collection 和 ...

  3. 动态创建OATipBean

    动态创建OATipBean. 动态创建的OATipBean无法直接设置提示内容,需要添加一个静态文本. 参考User Guide示例如下. If you need to create a tip pr ...

  4. IOS UIApplication和AppDelegate 关系

    UIApplication.AppDelegate.委托等的关系?  什么是委托?为什么要有委托?委托在Iphone中的实现机制是怎样的? 一般来说,我们创建了一个Iphone项目,默认会有这个mai ...

  5. 047——VUE中css过渡动作实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. RabbitMQ的几种工作模式

    maven: <dependencies> <!-- RabbitMQ的客户端 --> <dependency> <groupId>com.rabbit ...

  7. nginx配置文件的性能优化

    1.nginx进程数,建议按照cpu数目来指定,一般跟cpu核数相同或为它的倍数.worker_processes 8; 2.为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或 ...

  8. Linux磁盘分区扩容

    随着业务的增长,aliyun数据盘容量可能无法满足数据存储的需要,这时可以使用“”磁盘扩容“”功能扩容数据盘. 本文以一个SSD云盘的数据盘和一个运行Ubuntu 16..4 64位的 ECS 实例为 ...

  9. 在SSH项目中实现分页效果

    在实现分页的时候,我使用的是数据库下面的User表,实现的效果是通过分页查询 能够将表中的数据分页显示,点击相关的按钮实现:首页.上一页.下一页.末页的显示 1新建一个dynamic web proj ...

  10. Laravel学习之旅(一)

    路由 1.简介:简单的说就是将用户的请求转发给相应的程序进行处理: 2.作用:就是建立url和程序之间的映射. 3.请求类型:get.post.put.patch.delete 相比于thinkphp ...