当前位置: 首页 > wzjs >正文

花垣做网站北京免费建站网络营销

花垣做网站,北京免费建站网络营销,网络优化是做啥的,自己建的网站也要注册域名吗引言 在大数据时代,高效检索海量数据是许多应用的核心需求。Elasticsearch(ES)作为一款开源的分布式搜索引擎,凭借其实时搜索、高扩展性、全文检索等特性,成为企业级搜索解决方案的热门选择。本文将结合一个图书管理系…

引言

在大数据时代,高效检索海量数据是许多应用的核心需求。Elasticsearch(ES)作为一款开源的分布式搜索引擎,凭借其实时搜索、高扩展性、全文检索等特性,成为企业级搜索解决方案的热门选择。本文将结合一个图书管理系统的实际案例,详细介绍如何通过 Spring Boot 整合 Elasticsearch,实现高性能的全文检索功能,并提供完整代码示例和优化建议。


一、为什么选择 Elasticsearch?

1.1 全文检索的核心价值

  • 模糊匹配:支持根据关键词快速匹配内容,即使存在拼写错误
  • 分词优化:内置多种分词器(如IK中文分词),提升搜索精准度
  • 相关性评分:基于 TF-IDF 或 BM25 算法对结果排序
  • 高亮显示:自动标记匹配关键词,提升用户体验

1.2 Elasticsearch 的优势

  • 分布式架构:轻松应对 PB 级数据量
  • 近实时搜索:数据变更后1秒内可被检索
  • RESTful API:与 Spring Boot 无缝集成

二、环境与工具准备

  • 开发环境

    • JDK 11+
    • Spring Boot 2.7.x
    • Elasticsearch 7.17.3(与 Spring Data ES 版本兼容)
    • IK 中文分词器插件(v7.17.3)
  • 依赖配置

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

三、实战案例:图书全文检索系统

3.1 案例需求

  • 实现图书信息的标题/作者/简介模糊搜索
  • 搜索结果关键词高亮显示
  • 支持分页查询相关性排序

3.2 核心实现步骤

步骤1:配置 Elasticsearch

application.yml

spring:elasticsearch:rest:uris: http://localhost:9200  # ES地址connection-timeout: 5000     # 连接超时read-timeout: 30000         # 读取超时
步骤2:定义实体与索引映射
@Document(indexName = "books")
@Setting(shards = 1, replicas = 0)  // 分片与副本设置
public class Book {@Idprivate String id;@MultiField(mainField = @Field(type = FieldType.Text, analyzer = "ik_max_word"),otherFields = @InnerField(suffix = "keyword", type = FieldType.Keyword))private String title;@Field(type = FieldType.Text, analyzer = "ik_max_word")private String author;@Field(type = FieldType.Text, analyzer = "ik_max_word")private String description;// 自动创建索引时指定IK分词器@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")@Field(type = FieldType.Date, format = DateFormat.date)private Date publishDate;
}

关键注解解析

  • @Setting:定义索引配置
  • @MultiField:支持同一字段多种分词方式(如既分词又支持精确匹配)
  • analyzer = "ik_max_word":使用IK分词器进行细粒度分词
步骤3:自定义搜索接口
public interface BookRepository extends ElasticsearchRepository<Book, String> {// 高亮查询:匹配标题/作者/简介@Query("{\"bool\": {\"should\": [ " +"{\"match\": {\"title\": \"?0\"}}, " +"{\"match\": {\"author\": \"?0\"}}, " +"{\"match\": {\"description\": \"?0\"}} " +"]}}")SearchHits<Book> searchWithHighlight(String keyword, Pageable pageable);}
步骤4:实现高亮搜索服务
@Service
public class BookSearchService {@Autowiredprivate BookRepository bookRepository;public List<Book> searchBooks(String keyword, int page, int size) {// 构造分页与高亮参数Pageable pageable = PageRequest.of(page, size);SearchHits<Book> searchHits = bookRepository.searchWithHighlight(keyword, pageable);// 处理高亮结果return searchHits.stream().map(hit -> {Book book = hit.getContent();// 提取高亮字段List<String> titleHighlights = hit.getHighlightFields().get("title");if (titleHighlights != null) {book.setTitle(titleHighlights.get(0));}return book;}).collect(Collectors.toList());}
}
步骤5:控制器层暴露API
@RestController
@RequestMapping("/api/books")
public class BookController {@Autowiredprivate BookSearchService searchService;@GetMapping("/search")public ResponseEntity<List<Book>> search(@RequestParam String keyword,@RequestParam(defaultValue = "0") int page,@RequestParam(defaultValue = "10") int size) {return ResponseEntity.ok(searchService.searchBooks(keyword, page, size));}
}

四、效果测试与验证

4.1 插入测试数据

POST http://localhost:8080/api/books
Content-Type: application/json{"title": "Spring Boot实战","author": "张三","description": "一本讲解Spring Boot开发技术的实用指南","publishDate": "2023-01-01"
}

4.2 执行全文检索

GET http://localhost:8080/api/books/search?keyword=技术指南&page=0&size=5

4.3 预期响应结果

[{"id": "1","title": "Spring Boot<em>实战</em>","author": "张三","description": "一本讲解Spring Boot开发<em>技术</em>的实用<em>指南</em>","publishDate": "2023-01-01"}
]

五、高级优化技巧

5.1 中文分词优化

  1. 安装IK分词器

    ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.3/elasticsearch-analysis-ik-7.17.3.zip
    
  2. 自定义词典

    • config/analysis-ik 目录下添加自定义词库
    • 修改 IKAnalyzer.cfg.xml 配置热更新

5.2 搜索性能优化

  • 索引设计
    • 合理设置 mappings 字段类型(避免对数值字段分词)
    • 使用 copy_to 合并多个字段到同一搜索字段
  • 查询优化
    • 优先使用 term 查询代替 match 进行精确匹配
    • 合理使用 filter 上下文缓存结果

5.3 集群与安全

  • 生产环境部署
    spring.elasticsearch.rest.uris=http://node1:9200,http://node2:9200
    
  • 启用安全认证
    spring.elasticsearch.rest.username=admin
    spring.elasticsearch.rest.password=your_password
    

六、总结与扩展

通过本文,您已掌握:
✅ Spring Boot 与 Elasticsearch 的整合方法
✅ 实现高亮全文检索的核心代码
✅ IK分词器的配置与优化技巧

扩展方向建议

  1. 结合 Logstash 实现数据库与 ES 的实时同步
  2. 使用 Kibana 可视化搜索日志分析
  3. 探索 ES 的聚合分析功能实现数据统计

参考文档

  • Spring Data Elasticsearch 官方文档
  • Elasticsearch 权威指南

希望本文能帮助您快速构建高效的全文检索系统!如有问题欢迎在评论区交流讨论。


文章转载自:

http://BfG0uNaj.bhznL.cn
http://4wSv7OU3.bhznL.cn
http://3ylCCejW.bhznL.cn
http://2bePCGpl.bhznL.cn
http://1ziOQ987.bhznL.cn
http://Zu0r8I1w.bhznL.cn
http://zRdSS1Tt.bhznL.cn
http://b8MNBUgv.bhznL.cn
http://0XGJBcUy.bhznL.cn
http://64UjwHbf.bhznL.cn
http://IG0gOEm9.bhznL.cn
http://S8Tm1PDt.bhznL.cn
http://s1yfVQ42.bhznL.cn
http://hl4vukV2.bhznL.cn
http://TbWXvoYC.bhznL.cn
http://TNweMSGI.bhznL.cn
http://bZFX93Z2.bhznL.cn
http://MAUbgZTB.bhznL.cn
http://NWF3jgka.bhznL.cn
http://WDBp5vbB.bhznL.cn
http://f3G3spyq.bhznL.cn
http://VKdJIr3b.bhznL.cn
http://NNzqr98r.bhznL.cn
http://mfZ1Gh4x.bhznL.cn
http://fZa4JuzV.bhznL.cn
http://Kq37agHq.bhznL.cn
http://JpfsY981.bhznL.cn
http://U2eLYOJ9.bhznL.cn
http://67nxWlrK.bhznL.cn
http://qhsJzoi4.bhznL.cn
http://www.dtcms.com/wzjs/777701.html

相关文章:

  • 遵义市双控体系建设网站页面在线设计网站
  • 西部数码网站管理助手安装沙坪坝做网站
  • dw模板制作网站的缺点全网模板建站系统
  • 优秀seo网站财政局网站开发合同
  • 目前网站建设采用什么技术十大网站建设公司
  • 德兴市网站建设服务公司网站开发用哪些字体
  • 网站建设客户常见问题集锦网站怎么做优化百度能搜索到
  • 绍兴专业网站建设网页设计有什么用
  • 专业建站制作网络营销方式有哪些
  • 自己做网站怎么赢利娃哈哈软文推广
  • 网站域名到期后不续费会怎样o2o电子商务平台有哪些
  • 门户网站做吗seo自然排名关键词来源的优缺点
  • wordpress网址改错了做360网站优化快速排
  • 股票网站怎么做动态表格创业网项目招商
  • 华星建设集团网站国外私人网站
  • 网站广告条效果做网站用什么语
  • 青岛网站建设eoe做游戏模型素材 网站
  • 药材网技术网站建设前端小说
  • 网站建设基本流程产品推广的网站怎么做
  • 网站开发移动端环保网站建设方案
  • 做赚钱的网站有哪些丹东手机网站
  • dede网站地图位置音乐网站开发与需求
  • 无限成都成都市广播电视台官方网站wordpress无法编辑
  • 买了个网站后怎么做下列哪个不是网络营销成熟阶段出现的网络营销方式
  • 网站建设单词长春网站建设吉网传媒实力牜
  • 用wordpress做外贸网站做淘宝网站的
  • 销售网站建设方案怎么注册国外域名
  • 网站建设需要什么样的内容网络营销师培训费用是多少
  • 国际网站建设与维护企业管理培训免费课程
  • wcm 可以做网站吗手机免制作app软件下载