第一章传统应用问题传统的系统架构是一个单体架构经典的基于B/S的系统架构,将三层交互统一再一个war包部署在容器里。项目过于庞大,用户量达到上万和上百万时,传统项目有如下不足:开发相对困难:模块之间的强耦合性过多项目管理相对困难:远程仓库有很多不同分支点,可能需要多个分支点进行代码维护测试相对困难:测试人员针对多个模块需要对不同生产环境进行测试代码可读性差:后期需求模块的叠加,可能会出现代码冗余,
这里写目录标题一、分词器elasticsearch-analysis-ik1. 分词类型一、分词器的作用1.1 分词器的作用三、创建索引3.1 创建指定分词器的索引 之前我们创建索引,查询数据,都是使用的默认的分词器,分词效果不太理想,会把text的字段分成一个一个汉字,然后搜索的时候也会把搜索的句子进行分词,所以这里就需要更加智能的分词器IK分词器了一、分词器elasticsearch-anal
转载 2024-03-25 21:59:02
106阅读
1、索引原理1.1、倒排索引倒排索引(Inverted Index) 也叫反向索引,有反向索引必有正向索引。通俗来说,正向索引通过key找Value,反向索引是通过value找key。ES底层在检索时底层使用的就是倒排索引1.2、索引模型现有索引和映射如下:{ "products":{ "mappings":{ "properties":{ "descrip
简介ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用ElasticSearch的水平伸缩性,能使数据在生产环境变得更有价值。ElasticSearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elastic Search 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,
ES的默认中文分词效果太差了,稍微长一点的词句就完全匹配不到,于是选择使用安装IK中文分词器来实现索引的分词。参考:https://www.bbsmax.com/A/6pdDqDaXzw/ 一、安装官网教程:https://github.com/medcl/elasticsearch-analysis-ik,注意版本对应的问题 1.下载 从此处下载预构建包:
商品搜索1. Elasticsearch 安装(1)docker镜像下载docker pull elasticsearch:5.6.8注意:由于镜像有570MB,所以提供的虚拟机里已经下载好了该镜像,如下图:(2)安装es容器docker run -di --name=changgou_elasticsearch -p 9200:9200 -p 9300:9300 elasticsearch:5.
转载 2024-05-15 19:54:43
55阅读
一、ES分词介绍我们使用搜索搜索我们想要查询的内容时,ES数据库会对我们输入的内容进行分词,再按分词的评分进行排序,优先显示评分高的内容。如在某宝搜索双飞燕蓝牙无线鼠标,某宝的搜索引擎就可能会将该内容分为双飞燕,蓝牙,无线,鼠标,并将评分高的结果优先显示。如上图,双飞燕就跟无线蓝牙鼠标分开了,这就是分词因为默认的ES分词器对中文支持不是很好,这里需要使用elasticsearch-analysi
接第20节4、分词一个 tokenizer (分词器)接收一个字符流,将之分割为独立的 tokens (词元,通常是独立的单词),然后输出 tokens流。例如, whitespace tokenizer 遇到空白字符时分割文本。它会将文本"Quick brown fox!"分割为[Quick, brown, fox!l。该 tokenizer (分词器)还负责记录各个 term (词条)的顺序或
Elasticsearch 中文搜索时遇到几个问题:当搜索关键词如:“人民币”时,如果分词将“人民币”分成“人”,“民”,“币”三个单字,那么搜索该关键词会匹配到很多包含该单字的无关内容,但是如果将该词分词成一个整词“人民币”,搜索单字如“人”字又不会匹配到包含“人民币”关键词的内容,怎么解决这个问题,既保证覆盖度又保证准确度?搜索“RMB”时只会匹配到包含“RMB”关键词的内容,实际上,“RMB
转载 2024-03-25 08:56:21
101阅读
背景:默认使用es做检索服务时 只是针对某个字段做检索,传入关键词调用检索服务,检索过程中ES分词部分我们无法控制细节和逻辑,从而影响检索效果,以下我给出简单策略供同学们扩展自己业务的思路。 ES使用IK分词,支持 ik_smart/ik_max_word两种分词方式, 在建立索引时使用ik_max_word最细粒度分词,原因是分尽量多的term增加召回匹配文档量, 在检索时使用ik_smart粗
转载 2024-03-19 13:01:00
76阅读
keep_first_letter、keep_separate_first_letter、keep_full_pinyin、keep_joined_full_pinyin、keep_original用法纪实。 拼音分词环境准备找到和ElasticSearch版本相同的ik分词器和拼音分词器ElasticSearch的plugins目录下。ElasticS
ElasticSearch 是强大的搜索工具,并且是ELK套件的重要组成部分好记性不如乱笔头,这次是在windows环境下搭建es中文分词搜索测试环境,步骤如下1、安装jdk1.8,配置好环境变量2、下载ElasticSearch7.1.1,版本变化比较快,刚才看了下最新版已经是7.2.0,本环境基于7.1.1搭建,下载地址https://www.elastic.co/cn/downloads/e
一,倒排索引(Inverted Index)ElasticSearch引擎把文档数据写入到倒排索引(Inverted Index)的数据结构中,倒排索引建立的是分词(Term)和文档(Document)之间的映射关系,在倒排索引中,数据是面向词(Term)而不是面向文档的。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表 示例: 对以下三个文档去除停用词后构造倒排
什么是搜索?根据一个搜索词,检索出所有包含该词的数据 例如:用户在搜索框输入一个词,客户端软件发送一个请求到后台,后台通过sql语句从数据库中找出相关条目(数据库会一条一条的对比),这就是一个最简单搜索原型普通搜索面临的问题1, 当数据量很大时,假如500G, 效率低。从用户角度,从点击搜索按钮到看到搜索结果可能要很长时间,1小时?2小时?用户疯掉 2, 当数据量达到1T,一台电脑已经放不下了,这
文章目录1. 自动补全1.1 拼音分词器1.2.1 自定义分词器1.2.2 小结1.2 自动补全1.3 实现酒店搜索框自动补全1.3.1 修改酒店映射结构1.3.2 修改HotelDoc实体1.3.3 重新导入1.3.4 自动补全查询的 JavaAPI1.3.5 实现搜索框自动补全1.3.5 启动项目进行测试 本节代码和数据库文件链接:https://pan.baidu.com/s/1N_bpj
1、ES简介 ElasticSearch是一个基于Lucene的实时的分布式搜索和分析引擎。设计用于云计算中能够达到实时搜索,稳定可靠,快速,安装使用方便。基于RESTFUL接口。2、原理 ES使用了倒排索引(inverted index),该结构对于全文检索非常快。 倒排索引包括一个在任意文档中出现的唯一性的词语列表,对于每个词语,都有一个它出现过的文档列表。如下图所示:Doc_1:The qu
目录集成IK分词器扩展词典使用停用词典使用同义词典使用集成IK分词器        概要:IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。新版本的IKAnalyzer3.0发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。3.0特性:1)采
Elasticsearch一. 倒排索引和正排索引正向索引在数据库领域用的比较多,它是将全文进行分词,用户查询的时候就到所有的分词中去匹配,如果有匹配到分词,最终该文档就出现结果集中。倒排索引在搜索引擎领域用的比较多,它也会先进行分词,接着将分词与文档进行映射,分词就构成了一个词典,当用户查询的时候,首先到词典中查找对应的分词,然后将对应的文档获取到。二. ELKElasticsearch是真个e
转载 2024-03-31 21:57:35
53阅读
中文的搜索和英文的搜索最大不同之处在于分词,英文分词可以通过空格,而中文的分词则复杂很多,分词会直接影响用户的搜索使用体验,在一些大公司甚至会使用机器学习的方式进行分词。在这篇文章中笔者主要讲解ES中文分词相关的优化。1. 网络新词网络上经常会出现一些新词,比如“蓝瘦香菇”,蓝瘦香菇默认情况下会被分词分词结果如下所示 蓝,瘦,香菇 这样的分词会导致搜索出很多不相关的结果,在这种情况下,我们
上次写了一篇《Elasticsearch快速入门,掌握这些刚刚好!》,带大家学习了下Elasticsearch的基本用法,这次我们来篇实战教程,以mall项目中的商品搜索为例,把Elasticsearch用起来!中文分词器 由于商品搜索会涉及中文搜索,Elasticsearch需要安装插件才可以支持,我们先来了解下中文分词器,这里使用的是IKAnalyzer。在《Elasticsearch快速入门
  • 1
  • 2
  • 3
  • 4
  • 5