1 Star 1 Fork 0

邓纬 / MemorySearch 忆搜阁

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

MemorySearch 忆搜阁

前端代码仓库:memory-search-frontend

☕ 项目概述

这个项目是一个基于 Spring Boot + Elastic Stack 技术栈 + Vue.js聚合搜索中台。它不仅是一个强大的搜索引擎,更是一个内容丰富的社区平台。

这个项目的目标是提供一个一站式的搜索、管理和互动体验,满足各种用户需求。

🥘 效果展示

用户登录

image-20240222202351543

图片搜索

image-20240222203543310

文章上传

image-20240222203451920

统计分析

image-20240222213338497

🍚 使用场景

  • 企业内部多项目数据搜索:该平台能够满足企业内部多个项目的数据搜索需求,避免每个项目都单独开发搜索功能,提升开发效率并降低系统维护成本。
  • 多源内容聚合搜索:当需要聚合不同来源、不同类型的内容时,该平台可以提供一站式的搜索页面,便于用户快速查找所需信息,提高工作效率。
  • 企业级搜索需求:对于有大规模搜索需求的企业,该平台提供了稳定的、高效的搜索功能,满足企业的搜索需求,并支持数据源接入和管理。

🥣 核心功能与特点

  • 高效多元搜索 :用户可以在搜索框中输入关键词,系统会提供快速、准确的搜索结果。搜索结果会根据内容类型(文本、图片、视频)进行分类展示,并提供关键词高亮和搜索建议,使用户能快速找到所需内容。

  • 互动创作平台 :用户可以在这个模块中发布文章、上传图片,与其他用户互动。系统会自动推荐热门内容,引导用户发现更多优质内容。用户还可以对文章、图片进行点赞、评论和收藏,形成一个活跃的内容创作社区。

  • 流量统计分析 :系统会自动统计每个关键词的搜索流量,并按照时间、关键词类型等维度进行分析。用户可以查看热搜词类别和搜索流量高峰,了解内容趋势和用户行为。

  • 个人中心管理 :用户可以在个人中心查看和编辑个人信息,包括头像、昵称、简介等。用户还可以查看自己的点赞、评论和收藏的内容,以及自己创作的文章和下载的图片、视频等。

  • 资源全面管理 :这个模块仅对管理员可见,管理员可以对全站资源(文章、图片、视频、用户等)进行全面管理。管理员可以对资源进行添加、删除、修改等操作,保证资源的准确性和完整性。

  • 图片预览分享 :通过集成的图片预览功能,用户可以像浏览相册一样查看页面中的图片,并支持缩放和分享到社交媒体平台。

🍜 访问地址

暂未部署上线,点击跳转至:个人博客 MemorySearch 开发文档

🍝 架构设计

原图链接:项目架构图

image-20240221231907060

🍺 技术选型

后端

  • Spring Boot:作为项目的核心框架,提供快速构建 RESTful API 的能力。
  • Elasticsearch:作为搜索引擎的核心,提供全文搜索、结构化搜索和推荐等功能。
  • Elasticsearch JDBC:用于将关系型数据库中的数据同步到 Elasticsearch 中。
  • Spring Data Elasticsearch:提供与 Elasticsearch 的集成,简化 Elasticsearch 操作。
  • Logstash:用于日志收集、解析和传输,便于监控和调试。
  • Kibana:用于可视化展示 Elasticsearch 中的数据,提供强大的数据分析和可视化功能。
  • Mybatis:作为持久层框架,用于操作关系型数据库。
  • Redis:作为缓存数据库,提高系统性能。
  • Swagger:用于 API 文档的管理和展示。

前端

  • Vue.js:作为前端框架,提供响应式设计和组件化开发的能力。
  • Element UI:作为 Vue.js 的 UI 组件库,提供丰富的界面元素和样式。
  • Axios:用于发送 HTTP 请求,与后端 API 进行交互。
  • Vue Router:用于实现前端路由,管理页面跳转。
  • Vuex:用于管理前端状态,实现组件之间的数据共享和通信。
  • ECharts:用于数据可视化,展示统计图表。

🍰 快速启动

拉取代码后, 如何快速运行该项目

后端

  • 配置 MySQL、Redis、Elasticsearch 为本机地址:
# MySQL配置
datasource:
  driver-class-name: com.mysql.cj.jdbc.Driver
  url: jdbc:mysql://localhost:3306/xxx
  username: xxx
  password: xxx
# Redis 配置
redis:
  database: 0
  host: localhost
  port: 6379
  timeout: 5000
  password: Dw990831
# ES 配置
elasticsearch:
  uris: http://localhost:9200
  username: root
  password: 123456

额外安装

  • 在本地安装 Elasticsearch、Kibana、Logstash
  • ES 的 bin 目录下执行以下命令,启动 ES:
Elasticsearch.bat
  • Kibana 的 bin 目录下执行以下命令,启动 Kibana:
Kibana.bat
  • Logstash 的 config 目录下新增 .conf 文件,编写配置文件,做好数据映射(以下配置信息可作为参考)
# Sample Logstash configuration for receiving
# UDP syslog messages over port 514

input {
  jdbc {
    jdbc_driver_library => "D:\softWare\logstash\logstash-7.17.9\config\mysql-connector-java-8.0.29.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/******"
    jdbc_user => "******"
    jdbc_password => "******"
    statement => "SELECT * from post where updateTime > :sql_last_value and updateTime < now() order by updateTime desc"
    use_column_value => true
    tracking_column_type => "timestamp"
    tracking_column => "updatetime"
    schedule => "*/5 * * * * *"
    jdbc_default_timezone => "Asia/Shanghai"
  }
}

filter {
  mutate {
    rename => {
      "updatetime" => "updateTime"
      "userid" => "userId"
      "createtime" => "createTime"
      "isdelete" => "isDelete"
    }
    remove_field => ["thumbnum", "favournum"]
  }
}

output {
  stdout { codec => rubydebug }

  elasticsearch {
    hosts => "127.0.0.1:9200"
    index => "******"
    document_id => "%{id}"
  }
}
  • 在 Logstash 的根目录下执行以下命令,加载配置文件并启动 Logstash
.\bin\logstash.bat -f .\config\myTask.conf

前端

::: warning 注意 确保本地 Node.js 环境配置完成,版本为 v18.x.x及以上 :::

  • 根据后端接口文档,一键生成前端 HTTP 请求接口:

🍖 官方文档:ferdikoomen/openapi-typescript-codegen (github.com)

安装:

npm install openapi-typescript-codegen --save-dev

执行命令生成代码:

openapi --input http://localhost:8104/api/v2/api-docs?group=memory-search --output ./generated --client axios
  • 执行成功后,在 OpenAPI.ts 文件下,修改请求的后端地址:
export const OpenAPI: OpenAPIConfig = {
  BASE: "http://localhost:8104",
  VERSION: "1.0",
  WITH_CREDENTIALS: true,
  CREDENTIALS: "include",
  TOKEN: undefined,
  USERNAME: undefined,
  PASSWORD: undefined,
  HEADERS: undefined,
  ENCODE_PATH: undefined,
};
  • 执行以下命令,一键启动前端项目:
npm run serve

🥩 持续优化

随着项目的发展和用户需求的增加,我们将持续优化系统性能,提升用户体验。

加强系统的安全性措施,定期进行安全审计和漏洞扫描,确保用户数据的安全。引入微服务架构将项目向容器化部署发展,确保系统的可扩展性和灵活性。

同时将引入持续集成与部署的流程,实现自动化测试和部署上线,降低运维成本。

空文件

简介

这个项目是一个基于 Spring Boot + Elastic Stack 技术栈 + Vue.js 的聚合搜索中台。它不仅是一个强大的搜索引擎,更是一个内容丰富的社区平台。这个项目的目标是提供一个一站式的搜索、管理和互动体验,满足各种用户需求。 展开 收起
Java 等 2 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/deng-2022/memory-search-backend.git
git@gitee.com:deng-2022/memory-search-backend.git
deng-2022
memory-search-backend
MemorySearch 忆搜阁
master

搜索帮助