互联网搜索引擎课设

注意:仅供参考,为大家提供一点帮助,文中有很多可以优化的地方,鉴于个人精力,时间有限,写的项目能将就完成课程设计

gitee:SearchEngine: 互联网搜索引擎大作业 (gitee.com)

要求:

(一) 建立并实现文本搜索功能

◼ 利 用 / 调 用 开 源 搜 索 引 擎 Lucene(Apache Lucene - Welcome to Apache Lucene), ElasticSearch(Elasticsearch:官方分布式搜索和分析引擎 | Elastic) 或 者 Lemur(Lemur Project Home)实现文本搜索引擎。查阅相关资料,安装软件。

◼ 对经过预处理后的500个英文和中文文档/网页建立搜索并实现搜索功能。

◼ 通过上述软件对文档建立索引(Indexing),然后通过前台界面或者已提供的界 面,输入关键字,展示搜索结果。

◼ 前台可通过网页形式、应用程序形式、或者利用已有的界面工具显示。

◼ 实现英文搜索及中文搜索功能。

(二) 比较文档之间的相似度

◼ 通过余弦距离(Cosine Distance)计算任意两个文档之间的相似度,列出文档原文,并给出相似度值。

◼ 尝试实现一个文档查重程序。

(三) 对下载的文档,利用K-Means聚类算法进行聚类。

◼ 将下载的500个中文/英文文档聚为20个类,并显示聚类之后所形成的三个最大的类,及每个类中代表性的文档(即,离类中心最近的五个文档)。

◼ 将文档分别聚类成不同数量的类,如:5、10、25、50等,比较聚类结果的异同与变化。

◼ 距离计算公式,可采用余弦距离,也可用欧式距离。

一、建立并实现文本搜索功能

1.1.开发环境搭建

使用Elasticsearch实现全文内容检索

Elasticsearch是一个开源的搜索文献的引擎,大概含义就是你通过Rest请求告诉它关键字,他给你返回对应的内容,就这么简单。

Elasticsearch封装了LuceneLuceneapache软件基金会一个开放源代码的全文检索引擎工具包。Lucene的调用比较复杂,所以Elasticsearch就再次封装了一层,并且提供了分布式存储等一些比较高级的功能。

基于Elasticsearch有很多的插件,我这次用到的主要有两个,一个是kibana,一个是Elasticsearch-head

1.1.1.软件下载及配置

  • 安装Elasticsearch版本为7.17.3

【网址】Past Releases of Elastic Stack Software | Elastic

image-20240523200728776

  1. 使用内置的jdk,配置环境变量ES_JAVA_HOME

image-20240523201935332

  1. 进入config目录--->打开elasticsearch.yml 文件(虚拟机访问就必须要修改,主机可以不用修改)

image-20240523202045983

  1. windows下启动Elasticsearch服务,直接运行bin目录下的Elasticsearch.bat文件

image-20240523203001552

  1. 判断ES是否启动成功,直接访问 http://localhost:9200/

image-20240523203134262

  • 安装kibana(7.17.3)

【kibana】Past Releases of Elastic Stack Software | Elastic

image-20240523203646044

  1. 运行bin目录下的kibana.bat文件

image-20240523211349445

  1. 【访问网址】http://localhost:5601/

image-20240523211519975

image-20240523212122090

1.2.在Python中与Elasticsearch进行交互

  • 在Python中与Elasticsearch进行交互,需要安装Elasticsearch-py

 pip install elasticsearch
  • 编写python代码:

    1. main.py处理英文文档

     from elasticsearch import Elasticsearch
     import os
     import json
     from datetime import datetime
     ​
     # 创建 Elasticsearch 客户端实例
     es = Elasticsearch([{'host': 'localhost', 'port': 9200, 'scheme': 'http'}])
     ​
     # 创建索引
     def create_index(index_name):
         index_mapping = {
             "mappings": {
                 "properties": {
                     "title": {"type": "keyword"},
                     "contents": {"type": "text"},
                     "indexdate": {"type": "date"}
                 }
             }
         }
         es.indices.create(index=index_name, body=index_mapping)
     ​
     # 导入数据
     def ind
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值