创新实训(14)——爬坑Lucene搜索引擎工具包

前言

今天白天自己实现了文本的余弦相似度的实现方法,但是下午集成到后端项目中,进行测试后发现,在系统运行过程中,发现计算延迟太高了,会严重影响用户的体验,并且服务器受不了。每个用户点到每一篇博客文章的详细文章中,都会遍历所有的文章列表,计算相似度,真的太慢了。所以考虑使用lucene进行自动分词,然后计算倒排索引,然后计算文本的相似度。
Lucene可以实现全文的检索,找到每篇博客文章相似的博客文章,全文检索首先将要查询的目标文档中的词提取出来,组成索引,通过查询索引达到搜索目标文档的目的。

学习Lucene

Lucene是一套用于全文检索和搜索的开放源代码程序库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程序接口,能够做全文索引和搜索,在Java开发环境里Lucene是一个成熟的免费开放源代码工具。
Lucene可以实现全文检索。
在这里插入图片描述
我们只需要在抽取时,将博客文章信息清洗完成之后,一边写入数据库,一边调用Lucene将索引写入本地,等待使用。

在Spring Boot项目中,使用Lucene

(1)添加依赖

  <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>6.6.5</version>
    </dependency>
    <!-- lucene核心库 -->
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-core</artifactId>
        <version>${lunece.version}</version>
    </dependency>
    <!-- Lucene的查询解析器 -->
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-queryparser</artifactId>
        <version>${lunece.version}</version>
    </dependency>
    <!-- lucene的默认分词器库 -->
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-analyzers-common</artifactId>
        <version>${lunece.version}</version>
    </dependency>
    <!-- lucene的高亮显示 -->
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-highlighter</artifactId>
        <version>${lunece.version}</version>
    </dependency>

这里我选择了6.6.5版本,了解到在Lucene的4版本之前,是需要自己进行分词,然后在写入Lucene进行索引的,而在Lucene的4版本之后提供了不同的分词器,可以进行分词,比如标准分词器,IK分词器等等。
在这里插入图片描述
在这里插入图片描述
【1】坑一:
不知道为什么,我不管使用标准分词器进行初始化,还是使用IK分词器进行初始化,都会报错,并且错误不同
在网上找了很久解决方法,都没有能解决我的问题,所以只能另辟蹊径,寻找另外的办法
在这里插入图片描述
在这里插入图片描述
然后我就去想办法,不用maven导入的IK词器,自己去github找了一个有人实现的IK分词器

https://github.com/wks/ik-analyzer

然后将其打包到本地Maven仓库中,结果发现还是不行

mvn install -Dmaven.test.skip=true 然后打包到本地maven仓库
将以下依赖加入工程的pom.xml中的…部分。

    <dependency>
        <groupId>org.wltea.ik-analyzer</groupId>
        <artifactId>ik-analyzer</artifactId>
        <version>3.2.8</version>
</dependency>

然后在github找有关Lucene的开源项目,找到了有人手动继承了Lucene的分词器类,然后自己实现了IK分词器

在这里插入图片描述
我准备将它的代码引入到我的项目中,看看能不能让项目中的Lucene真正的运行起来

这个东西明天在搞,今天就到这了。

猜你喜欢

转载自blog.csdn.net/baidu_41871794/article/details/106736433