solr学习之六--------Analyzer(分析器)、Tokenizer(分词器)

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

这就是因为我们没有配置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分词之后,再再行的继续处理,比如全转成小写,时态处理, 去掉语气词等。。。

原文地址:https://www.cnblogs.com/cuihongyu3503319/p/9335820.html

时间: 2024-10-08 02:37:52

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

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

转自:http://blog.csdn.net/linzhiqiang0316/article/details/51554217,表示感谢. 由于前面没有设置分词器,以至于查询的结果出入比较大,并且无法进行正确的高亮显示.现在配置一下分词器来解决相关问题. solr6.0中进行中文分词器IK Analyzer的配置和solr低版本中最大不同点在于IK Analyzer中jar包的引用.一般的IK分词jar包都是不能用的,因为IK分词中传统的jar不支持solr6.0这个高版本的,所以就会发送运行

Elasticsearch的分析过程,内置字符过滤器、分析器、分词器、分词过滤器(真是变态多啊!美滋滋)

分析过程 当数据被发送到elasticsearch后并加入倒排序索引之前,elasticsearch会对文档进行处理: 字符过滤:使用字符过滤器转变字符. 文本切分为分词:将文本(档)分为单个或多个分词. 分词过滤:使用分词过滤器转变每个分词. 分词索引:最终将分词存储在Lucene倒排索引中. 整体流程: 目的是达到人性化的分词 内置字符过滤器 HTML字符过滤器.映射字符过滤器.模式替换过滤器 HTML字符过滤器 POST _analyze { "tokenizer": "

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

1.solr自带的分词器远远满足不了中文分词的需求,经查使用最多的分词器是solr是mmseg4j分词器,具体整合大家可以参考 https://github.com/zhuomingliang/mmseg4j 一定要注意版本 2.将这两个包直接拷贝到tomcat下的solr/lib中 3.在solr/java里新建dic目录将词库拷贝进去 4.直接在浏览器http://127.0.0.1:8080/solr即可如下分词结果 ok,分词整合完毕!

solr学习文档之添加分词词库

在上一篇文章中我们学习了solr的快速入门和针对mysql数据库建立索引,今天我们介绍如何为solr添加中文分词 1.  在百度搜索ik-analyzer,找到后下载,我下载的是[IKAnalyzer 2012FF_hf1.zip],解压后会看到如下目录 2.  把IKAnalyzer2012FF_u1.jar拷贝到webapps下solr的lib文件夹下,把IKAnalyzer.cfg.xml和stopword.dic拷贝到solr的conf目录中 3.  修改schema.xml文件,增加如

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

1 <dynamicField name="*_is" type="pints" indexed="true" stored="true"/> 2 <dynamicField name="*_s" type="string" indexed="true" stored="true" /> 3 <dynamicField

Lucene.net(4.8.0) 学习问题记录一:分词器Analyzer的构造和内部成员ReuseStategy

前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3.6.0 ,PanGu分词也是对应Lucene3.6.0版本的.不过好在Lucene.net 已经有了Core 2.0版本,4.8.0 bate版,而PanGu分词,目前有人正在做,貌似已经做完,只是还没有测试~,Lucene升级的改变我都会加粗表示. Lucene.net 4.8.0 https:

Solr7.x学习(3)-创建core并使用分词器

1.创建core文件夹 ck /usr/local/solr-7.7.2/server/solr mkdir first-core cp -r configsets/_default/* first_core/ 2.添加core 3.配置中文IK分词器 参考:https://github.com/magese/ik-analyzer-solr 1)将ik-analyzer-7.7.1.jar复制到solr-7.7.2/server/solr-webapp/webapp/WEB-INF/lib目录

[Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一.

在这里一下讲解着三个的安装和配置, 是因为solr需要使用tomcat和IK分词器, 这里会通过图文教程的形式来详解它们的安装和使用.注: 本文属于原创文章, 如若转载,请注明出处, 谢谢.关于设置IK分词器的文章 IK分词器: http://www.cnblogs.com/wang-meng/p/5814798.html 1, 解压tar文件首先我们在根目录下建立一个solr目录(使用命令: mkdir /solr):  然后查看目录是否生成成功:  解压solr/tomcat/IK 到sol

Lucene 4.4.0中常用的几个分词器

作者:ceclar123 推荐:刘超觉先 package bond.lucene.analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.core.WhitespaceAnalyzer; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.apache.lucene