Lucene&&Solr——分析器(Analyzer)

简介: Lucene&&Solr——分析器(Analyzer)

引言

 

在Lucene中分析器其中举足轻重的作用,为了满足多种语言的支持,需要扩展一些分析器,仅仅是Lucene官方提供的标准分析器是远远不够的,比如对于中文,我们就需要引用第三方的中文分析器,下面就介绍几种分析器。

 

分析器的执行过程:



20170802235731687.png


以标准分析器为例说明这个三个TokenFilter的作用:


第一个过滤器:将首字母小写


    第二个过滤器:以空格为分割线,将句进行拆分成独立的单词


    第三个过滤器:去掉一些没有意义的单词 比如 the  a  an  等等

 

Lucene自带的中文分词器:


   StandardAnalyzer:


   单个字分词:就是按照中文一个字一个字的进行分词:比如“我爱中国”


   效果:“我”“爱”“中”“国”


   CJKAnalyzer

 

二分法分词:按两个字进行切分,如:“我是中国人” 效果:“我是”“是中”“中国”“国人”


   SmartChineseAnalyzer


   对中文的支持比较好,但扩展性差 扩展词库 禁用词库等不好处理

 

上面的这几种分析器都不能很好的满足我们的需求,所以有人写了一个良好的中文分析器IKAnalyzer


  这个中文分析器的使用也非常的简单:


  第一步:引入jar包IKAnalyzer2012FF_u1.jar


  第二步:拷贝配置文件 放在src下面  


20170803001227407.png

第三步:直接nAnalyzer analyzer = new IKAnalyzer();即可使用


分析器的使用时机

 

索引时使用Analyzer

 

输入关键字进行搜索,当需要让该关键字与文档内容所包含的词进行匹配时需要对文档域内容进行分析,需要经过Analyzer分析器处理生成语汇单元(Token).分析器分析的对象时文档中的Field域。当Fieldshuxing tokenized(是否分词)为true时会对Field值进行分析,如图:


20170803001650477.png


搜索时使用Analyzer

 

对搜索关键字进行分析和索引分析一样,使用Analyzer对搜索关键字进行分析、分词处理,使用分析后每个词语进行搜索。比如搜索关键字:spring web,经过分析器进行分词,得出 spring  web 拿去索引词典表查找,找到索引连接到Document,解析Document内容

对于匹配整体Field域的查询可以在搜索时不分析,比如根据订单号,身份证号查询等

 

再次强调:搜索使用的分析器和索引使用的分析器要一致。

 

solr安装中文分析器(IKAnalyzer)


20170803002432765.png


小结

 

本文主要介绍了一些分析器的内容,尤其是对于中文分析器的使用,分析器的执行流程和执行时机需要我们了解,希望能给读者带来帮助。

目录
相关文章
|
Java 数据库连接 mybatis
Mybatis使用in并返回返回List
Mybatis使用in并返回返回List
169 2
|
Arthas 缓存 Java
在 Windows 下的 Arthas 快速安装 | 学习笔记
快速学习在 Windows 下的 Arthas 快速安装
在 Windows 下的 Arthas 快速安装 | 学习笔记
|
机器学习/深度学习 自然语言处理 达摩院
Rethinking Information Extraction :信息抽取的现状与未来
​ ##引言 从计算到感知再到认知是业内学者都认同的人工智能技术发展路径。机器具备认知智能,进而实现推理、规划乃至联想和创作,在一定程度上需要一个充满知识的大脑,而信息抽取是获取知识的重要途径之一。 在具体的业务场景如搜索推荐,结构化的领域知识有利于实现细粒度文本理解,有利于实现精准的复杂问答,有利于
6006 0
|
1月前
|
人工智能 数据可视化 API
私有化部署大模型并配置可视化界面
Ollama 是一款专为大模型本地私有化部署设计的轻量级工具,支持跨平台运行,兼容 Windows、macOS、Linux 系统及多种硬件架构。通过简单的命令行操作,用户可一键启动、下载与管理主流大语言模型,如 Llama 3、Mistral、Gemini、Phi 等。其核心优势在于自动化处理模型依赖、资源调度及环境配置,大幅简化部署流程,即使非专业技术人员也能快速上手。Ollama 的本地运行模式确保数据全程在私有环境流转,规避隐私泄露风险,适用于企业内部知识库、客服助手、本地数据分析等场景。
417 0
私有化部署大模型并配置可视化界面
|
Shell
在Shell脚本或命令行中,标准错误输出
在Shell脚本或命令行中,标准错误输出
1067 1
|
数据采集 算法 关系型数据库
在 MySQL 中使用 SOUNDEX?
【8月更文挑战第6天】
211 0
在 MySQL 中使用 SOUNDEX?
|
11月前
|
应用服务中间件 Linux nginx
CentOS7安装Nginx
CentOS7安装Nginx
|
Java 程序员
java截取字符串的几种方法
java截取字符串的几种方法
|
JSON 数据格式
解决报错TypeError: Converting circular structure to JSON --> starting at object with constructor
解决报错TypeError: Converting circular structure to JSON --> starting at object with constructor