WhitespaceAnalyzer|学习笔记

简介: 快速学习 WhitespaceAnalyzer

开发者学堂课程【Lucene 知识精讲与实战(上) WhitespaceAnalyzer】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/700/detail/12340


WhitespaceAnalyzer


Lucene 原生分词器中的 WhitespaceAnalyzer

WhitespaceAnalyzer 的作用主要是去掉空格,除此之外没有其他作用,而且不支持中文。

1.以下是 WhitespaceAnalyzer 的测试代码:

@Test

public void TestwhitespaceAnalyzer throws Exception{

//1.创建分词器,分析文档,对文档进行分词

Analyzer analyzer new WhitespaceAnalyzer ();

//2.创建 Directory 对象,声明索引库的位置

Directory directory = FSDirectory.open(Paths.get("E:\\dir"));

//3、创建 IndexwriteConfig 对象,写入索引需要的配置

IndexwriterConfig config = new IndexwriterConfig(analyzer);

//4.创建 Indexwriter 写入对象

Indexwriter indexwriter = new Indexwriter(directory,config);

/5.写入到索引库,通过 Indexwriter 添加文档对象 document

Document doc = new Document

doc.add(new TextField("name","vivo X238GB+128GB 幻夜蓝",Field.Store.YEs));

indexwriter.addDocument (doc);

//6.释放资源

indexwriter.close();

在测试代码中创建分词器,然后指定目录的位置,directory 对象,指定索引库的位置,再创建输入流的初始化对象,里面指定使用的分词器。在下面创建一个文档对象,在文档对象里创建文本域,域名叫 name ,"vivo X238GB+128GB 幻夜蓝是域值,是否存储选择的是 YES ,然后创建文档,释放资源。

这就是创建索引的过程。

2.测试

(1)用上面的代码进行测试。

把以前的测试关闭然后创建类,如图:

image.png

先单独创建一个类,这个类叫做 TestAnalyzer。

(2)看以下代码:

package cn.itheima.test;

/**

*测试分词器

*/

public class TestAnalyzer{

public void test

}

这是测试分词器,测试分词器的分词效果。下面写一个测试方法即 public void test ,测试 webspaceAnalyzer ,然后把之前的代码复制粘贴过来,用它进行测试,观察效果。

(3)请看以下代码:

package cn.itheima.test;

/**

*测试分词器

*/

public class TestAnalyzer{

@Test

public void TestwhitespaceAnalyzer throws Exception{

//1.创建分词器,分析文档,对文档进行分词

Analyzer analyzer new WhitespaceAnalyzer ();

//2.创建 Directory 对象,声明索引库的位置

Directory directory = FSDirectory.open(Paths.get("E:\\dir"));

//3、创建 IndexwriteConfig 对象,写入索引需要的配置

IndexwriterConfig config = new IndexwriterConfig(analyzer);

//4.创建 Indexwriter 写入对象

Indexwriter indexwriter = new Indexwriter(directory,config);

/5.写入到索引库,通过 Indexwriter 添加文档对象 document

Document doc = new Document

doc.add(new TextField("name","vivo X238GB+128GB 幻夜蓝",Field.Store.YEs));

indexwriter.addDocument (doc);

//6.释放资源

indexwriter.close();

}

}

这种分词器作用是讲解原理,具体在企业中使用,像这种原生分词器是无法直接使用的,这种具体是以讲解原理为主,比如:Document 是一个挂包,TextField 是文本域,是一个挂包。如果需要测试它,原来索引库的数据就作废了,需要将其清除,否则数据会过多,影响后续的查询。

(4)先关闭 look 这些小工具,防止它们占用磁盘,接下来在索引库清除所有的数据,如图:

image.png

清除后执行 webspaceAnalyzer ,测试它的效果,如图:

image.png

(5)在代码中加上:*去掉空格分词器,不支持中文,然后执行看效果。

如图:

image.png

执行成功,通过 look 小工具查看它去空格的效果,如图:

image.png

(6)重新打开索引库,如图:

image.png

可以看到,这里有一个域 name 打开,发现不支持中文,对于中文没有进行分词,其他的把空格去掉,标点符号也没有去掉。

这就是原生分词器中 webspaceAnalyzer 的分词效果。而对于其它分词器,可以直接使用测试代码做演示,最后还会使用第三方分词器来做真正测试。

相关文章
|
Linux Perl
Linux centos7升级内核(两种方法:内核编译和yum更新)
Linux centos7升级内核(两种方法:内核编译和yum更新)
4155 1
Linux centos7升级内核(两种方法:内核编译和yum更新)
|
机器学习/深度学习 并行计算 PyTorch
PyTorch中的多进程并行处理
这篇文章我们将介绍如何利用torch.multiprocessing模块,在PyTorch中实现高效的多进程处理。
512 1
|
KVM 虚拟化
KVM的热添加技术之CPU
这篇文章介绍了如何在KVM虚拟机中热添加CPU资源,包括查看当前CPU配置、修改CPU核心数、永久性修改CPU配置以及注意事项等操作步骤。
430 1
KVM的热添加技术之CPU
|
机器学习/深度学习 存储 自然语言处理
LangChain-22 Text Embedding 续接21节 文本切分后 对文本进行embedding向量化处理 后续可保存到向量数据库后进行检索 从而扩展大模型的能力
LangChain-22 Text Embedding 续接21节 文本切分后 对文本进行embedding向量化处理 后续可保存到向量数据库后进行检索 从而扩展大模型的能力
355 0
|
Python
[python]使用gunicorn部署fastapi服务
[python]使用gunicorn部署fastapi服务
608 1
|
Linux C语言 容器
在低版本glibc的环境里运行基于高版本glibc编译的可执行程序
在低版本glibc的环境里运行基于高版本glibc编译的可执行程序
|
Java API
java调用个人微信API接口收发朋友圈,删除评论朋友圈
java调用个人微信API接口收发朋友圈,删除评论朋友圈
|
JSON 安全 Java
Elasticsearch 语法指南(全)
Elasticsearch 语法指南(全)
|
机器学习/深度学习 人工智能 自然语言处理
商汤自研的通用Embedding模型Piccolo2
【6月更文挑战第19天】商汤Piccolo2模型**是其新推出的通用Embedding技术,通过多任务混合损失训练提升泛化能力,在CMTEB基准测试中刷新纪录。模型动态调整向量维度与使用MRL方法增强语义理解,但可能增加计算成本,且有观点认为其改进非革命性。[论文链接](https://arxiv.org/abs/2405.06932)
571 1
|
机器学习/深度学习 自然语言处理 算法
分词算法在自然语言处理中的基本原理与应用场景
分词算法在自然语言处理中的基本原理与应用场景