solr学习之六--------Analyzer(分析器)、Tokenizer(分词器)
学习 Solr 之六 分析器 分词器 -------- Analyzer
2023-09-11 14:14:06 时间
首先,不知道大家在前面的例子中没有试着搜索文本串,就是在第二节,我们添加了很多文档。如果字段值是一个文本。你如果只搜索这个字段的某个单词,是不是发现搜不到?
这就是因为我们没有配置Analyzer,因此在搜索的时候会“全匹配”。可以从直观感觉上理解为SQL的 like和= 的区别。
通过前面这段引文,我们就能知道:Analyzer就是分析我们的文本的。
一般来说:solr.TextField类型的字段才需要分析器。
最简单的配置分析器的如下:
-
<fieldType name="nametext" class="solr.TextField">
-
<analyzer class="org.apache.lucene.analysis.WhitespaceAnalyzer"/>
-
</fieldType>
其实分析器(Analyzer)还可以包括一个分词器(Tokenizer)和多个过滤器(filter),这2个东西,是为了实现更复杂的场景,我们后续再讲。
分析器一般出现在2个环境:建索引(index)和查询(query),大多数情况下这2个场景的分析过程都是一样,也就是说用的是相同的分析器。但是,你仍然可以为2个不同的阶段指字不同的分析器:
-
<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>
同过 type来指阶段。
Tokenizer:
分词器,从字面意思都可以理解,就是将句子拆成一个个的词(或者是词组),比如A B C D,可以拆成A,B,C,D4个单独的单词,也有可能拆成AB,CD 或者其它。。。。 这个就看你分词规则了。
使用如下:
-
<fieldType name="text" class="solr.TextField">
-
<analyzer>
-
<tokenizer class="solr.StandardTokenizerFactory"/>
-
</analyzer>
-
</fieldType>
值 得注意的是:这里配的class是Factory,而不是真正的分词器,他是通过工厂类来创建分词器实例的。所有的工厂类,必须实现org.apache.solr.analysis.TokenizerFactory
工厂的产出物,也必须派生至:org.apache.lucene.analysis.TokenStream
Filter:
就是经过Tokenizer分词之后,再再行的继续处理,比如全转成小写,时态处理, 去掉语气词等。。。
相关文章
- Solrflux源码分析-Sql Support within Solr-类Sql的solr搜索实现(2)
- 【LINUX学习】磁盘检验 fsck ,badblocks
- R语言与显著性检验学习笔记
- linux shell 脚本攻略学习9--rename命令详解
- 机器学习入门13 - 正则化:稀疏性 (Regularization for Sparsity)
- 机器学习笔记 - 使用自己收集的图片以及卷积神经网络,进行图像分类训练
- Dubbo学习(五) Dubbo 从下载到编译成功
- DL之IDE:深度学习环境安装之NVIDIA驱动程序安装图文教程(根据Anaconda的CUDA版本去安装对应匹配的NVIDIA)之详细攻略
- 技术实操丨SoundNet迁移学习之由声音分类到语音情感识别
- Python学习85:图形界面
- 学习Spring Boot:(二十二)使用 AOP
- 【solr基础教程之中的一个】Solr相关知识点串讲
- Java学习路线-4:String字符串
- Vue学习之--------内置指令的使用【v-bind、v-model、v-for、v-on、v-if 、v-else、v-show、v-text。。。】(2022/7/19)
- Solr的知识点学习
- linux内存操作--ioremap和mmap学习笔记
- 小白怎样学习数据分析?
- 你也可以写个聊天程序 - C# Socket学习1
- golangWeb框架---github.com/gin-gonic/gin学习二(文件上传、多文件上传)
- 树莓派 ROS 学习(二)小乌龟 turtlesim