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

ps做图网站城乡建设局和住监局官网

ps做图网站,城乡建设局和住监局官网,企业网站建设费属于办公费吗,敦煌壁画网站开发毕设论文#x1f3ac; 鸽芷咕#xff1a;个人主页 #x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想#xff0c;就是为了理想的生活! 引入 全文搜索属于最常见的需求#xff0c;开源的 Elasticsearch #xff08;以下简称 Elastic#xff09;是目前全文搜索引… 鸽芷咕个人主页 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想就是为了理想的生活! 引入 全文搜索属于最常见的需求开源的 Elasticsearch 以下简称 Elastic是目前全文搜索引擎的首选相信大家多多少少的都听说过它。它可以快速地储存、搜索和分析海量数据。就连维基百科、Stack Overflow、Github 都采用它选择作为自己的搜索引擎今天就让我们来了解了解 Elasticsearch 为什么这么快它的架构介绍及原理解析。 文章目录 引入一 、Elastic Search的简介二、什么是倒排索引2.1 倒排索引讲解 三、倒排索引的工作原理3.1 分词与索引构建3.2 索引存储与优化3.3 查询处理 四、构建倒排索引的源码解析五、实战教学5.1 创建索引和映射5.2 添加文档5.3 搜索文档 总结 一 、Elastic Search的简介 Elastic Search简称ES是一个基于Apache Lucene构建的开源、分布式、RESTful搜索和分析引擎。它允许你快速地存储、搜索和分析大量数据。ES通常用于日志分析、全文搜索等复杂的数据分析场景。 二、什么是倒排索引 倒排索引是一种用于快速检索的数据结构常用于搜索引擎和数据库中。与传统的正排索引不同倒排索引是根据关键词来建立索引而不是根据文档ID。 2.1 倒排索引讲解 下面我们用一个简单的例子描述一下倒排索引的作用过程 假如现在有三份数据文档内容分别是 代码语言javascript Doc 1:Java is the best programming languageDoc 2:PHP is the best programming languageDoc 3:Javascript is the best programming language为了创建索引ES引擎通过分词器将每个文档的内容拆成单独的词称之为词条或term再将这些词条创建成不含重复词条的排序列表然后列出每个词条出现在哪个文档结果如下 这种结构由文档中所有不重复的词的列表构成对于其中每个词都有至少一个文档与与之关联。这种由属性值来确定记录的位置的结构就是倒排索引带有倒排索引的文件被称为倒排文件。 将上表转为更直观的图片来展示倒排索引 三、倒排索引的工作原理 3.1 分词与索引构建 首先搜索引擎会对文档内容进行分词处理将文本拆分成独立的单词或词组。然后为每个单词或词组创建一个倒排列表该列表记录了包含该单词或词组的所有文档的ID和该单词在文档中的位置信息如偏移量、词频等。 3.2 索引存储与优化 接下来搜索引擎会将这些倒排列表存储在磁盘上并进行一系列的优化操作如压缩、合并等以减少存储空间和提高查询效率。这些优化操作使得倒排索引在保持高效查询性能的同时也具有良好的可扩展性和稳定性。 3.3 查询处理 当用户发起搜索请求时搜索引擎会对查询语句进行分词处理并生成一个查询词列表。然后根据这个查询词列表在倒排索引中查找对应的倒排列表并将这些倒排列表进行交集运算以找到同时包含所有查询词的文档。最后根据一定的排序算法对结果进行排序并返回给用户。 四、构建倒排索引的源码解析 public class IndexWriter {// ... 其他属性和方法public void addDocument(Document doc) throws IOException {// Document 是一个容器存储了待索引的字段和值// ... 初始化和准备阶段的代码// 遍历文档的每个字段for (IndexableField field : doc) {// 获取字段的名称和值String name field.name();String value field.stringValue();// 使用分析器对文本进行分词Analyzer analyzer getAnalyzer();TokenStream tokenStream analyzer.tokenStream(name, value);tokenStream.reset();// 遍历分词结果构建倒排索引while (tokenStream.incrementToken()) {CharTermAttribute termAtt tokenStream.getAttribute(CharTermAttribute.class);String termText termAtt.toString();// 此处的 termText 即为分词后的词项// 将词项加入到倒排索引中此处为简化示例具体实现会涉及到词项的存储、文档的标识、词项在文档中的位置等信息addTermToInvertedIndex(name, termText, docId);}tokenStream.end();tokenStream.close();}// ... 后续的索引更新和维护代码}private void addTermToInvertedIndex(String fieldName, String termText, int docId) {// 此方法用于将词项加入到倒排索引中// 在实际的 Lucene 源码中这里会涉及到更复杂的数据结构和算法来存储和管理倒排索引// ... 具体的实现代码}// ... 其他属性和方法 } 五、实战教学 5.1 创建索引和映射 首先我们需要创建一个索引并为该索引定义一个映射mapping以确定文档的结构。 import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.CreateIndexResponse;public class CreateIndexExample {public static void createBlogIndex(RestHighLevelClient client) {CreateIndexRequest request new CreateIndexRequest(blog);request.source({\properties\: {\title\: {\type\: \text\},\content\: {\type\: \text\}});try {CreateIndexResponse createIndexResponse client.indices().create(request, RequestOptions.DEFAULT);System.out.println(createIndexResponse.isAcknowledged());} catch (IOException e) {e.printStackTrace();}} } 5.2 添加文档 接下来我们可以向我们的索引中添加一些文档。 import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexResponse;public class AddDocumentExample {public static void addBlogPost(RestHighLevelClient client, String id, String title, String content) {IndexRequest request new IndexRequest(blog).id(id);request.source({\title\: \ title \, \content\: \ content \});try {IndexResponse indexResponse client.index(request, RequestOptions.DEFAULT);System.out.println(indexResponse.getId());} catch (IOException e) {e.printStackTrace();}} } 5.3 搜索文档 import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse;public class SearchDocumentExample {public static void searchPost(RestHighLevelClient client, String query) {SearchRequest searchRequest new SearchRequest(blog);SearchSourceBuilder searchSourceBuilder new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.matchQuery(title, query));searchRequest.source(searchSourceBuilder);try {SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);for (SearchHit hit : searchResponse.getHits().getHits()) {System.out.println(hit.getSourceAsString());}} catch (IOException e) {e.printStackTrace();}} } 总结 过这个简单的实战示例我们可以看到Elasticsearch的倒排索引如何使得文本搜索变得高效。倒排索引的核心思想是将单词或词组映射到包含它们的文档上这样我们就可以直接查询倒排索引来找到包含特定单词的文档而不需要逐个检查每个文档的内容。这使得Elasticsearch成为一个非常强大的搜索引擎适用于各种需要高效文本搜索的场景。
http://www.hkea.cn/news/14418541/

相关文章:

  • 国外网站建设接单seo是搜索引擎营销
  • 如何在网盘上做网站wap网站 区别
  • 无锡企业网站制作一般多少钱找人做企业网站注意啥
  • 中小企业网站建设与管理课件百度云北京做网站制作公司
  • 什么叫网站做电子烟外贸网站有哪些
  • 怎么做淘客网站推广阜阳企业网站推广
  • 大网站是用什么做html5的凡科做的网站怎么样
  • 网站建设及维护服务技术指标wordpress 页面打不开
  • 石家庄网站建设系统电脑网站页面怎么调大小
  • 做弹弓教程网站广州黄埔建网站
  • 仿 手机 网站模板html源码文明网站建设方案
  • 食品网站应该怎么做做齐鲁油官方网站
  • 阿里云主机怎么做两个网站吗网站是怎么搭建的
  • 网上接手袋做是哪一个网站动漫设计一个月能挣多少钱
  • 算命手机网站开发微官网和公众号的区别
  • 做网站赚钱什么类型网站改版中
  • seo站长工具综合查询成都房地产网
  • 昆明网站建站平台东莞松山湖学校
  • 德国域名申请网站网站美化模板
  • 国内用react做的网站wordpress分类推荐
  • 建站公司塔山双喜网站品牌建设公司
  • 网站分页效果小程序小游戏
  • 能用的网站济南网站建设专业
  • 招商网站建设运营大连男科医院排名表
  • 开源网站程序线上编程培训机构哪家好
  • 网站设置密码无法解析服务器的dns地址
  • 青岛优化网站关键词免费企业名录
  • 酷炫的网站模板免费下载网络营销seo培训
  • 网站建设次年续费合同wordpress的ftp设置方法
  • 南昌做网站建站的域名访问升级紧急中拿笔记好