首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在elasticsearch中匹配比max_gram更长的字符串?

在elasticsearch中,匹配比max_gram更长的字符串有以下几个原因:

  1. 精确匹配:max_gram是elasticsearch中的一个分词器参数,用于将输入的文本进行分词处理。它指定了分词器将输入文本切分成的最大长度。如果要匹配比max_gram更长的字符串,意味着希望进行精确匹配,而不是将文本切分成较短的片段进行匹配。
  2. 长文本查询:在某些场景下,可能需要对较长的文本进行查询,例如搜索引擎中的全文搜索。如果限制了max_gram的长度,可能会导致较长的文本被切分成多个片段,从而影响查询的准确性和性能。
  3. 特定需求:有些特定的业务需求可能需要匹配比max_gram更长的字符串。例如,某些应用场景中需要对长文本进行关键词提取或者文本摘要生成,此时需要保留原始的长字符串进行处理。

对于以上需求,elasticsearch提供了多种解决方案:

  1. 使用keyword类型:可以将字段的类型设置为keyword,这样elasticsearch将不会对该字段进行分词处理,而是将整个字符串作为一个整体进行匹配。这适用于需要精确匹配或者查询长文本的场景。
  2. 使用match_phrase查询:match_phrase查询可以用于匹配包含指定短语的文档,而不是仅仅匹配单个词项。通过将查询字符串设置为需要匹配的长字符串,可以实现对比max_gram更长的字符串进行匹配。
  3. 自定义分词器:如果需要更灵活地控制分词过程,可以自定义分词器。通过自定义分词器,可以根据具体需求对文本进行切分,从而满足对比max_gram更长的字符串进行匹配的需求。

腾讯云提供了Elasticsearch服务,用于构建和管理全文搜索引擎。您可以通过腾讯云Elasticsearch服务来实现对比max_gram更长的字符串进行匹配的需求。详情请参考腾讯云Elasticsearch产品介绍:https://cloud.tencent.com/product/es

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Elasticsearch能检索出来,但不能正确高亮怎么办?

死磕Elasticsearch技术微信群 2、一个Demo描述清楚问题 注:本文示例DSL7.2版本运行ok,6.X之前早期版本可能需要微调。...如上示例中代表:保留数字、字母。若上述示例,只指定 "letter",则数字就会被过滤掉,分词结果只剩下串字符如:"OF"。...5、选型注意 Ngram本质:用空间换时间。其能匹配前提是写入时候已经按照:min_gram、max_gram切词。 数据量非常少且不要求子串高亮,可以考虑keyword。...Wood大叔也 多次强调:wildcard query应杜绝使用通配符打头,实在不得已要这么做,就一定需要限制用户输入字符串长度。...6、小结 为讨论解决线上问题,引申出Ngram原理和使用逻辑,并指出了wildcard和Ngram适用业务场景。希望对实战你有所启发和帮助! 你在业务遇到子串匹配和高亮情况吗?

3.3K20

一起学Elasticsearch系列-模糊搜索

本文字数:3668字,阅读大约需要 10 分钟 Elasticsearch ,模糊搜索是一种近似匹配搜索方式。它允许找到与搜索词项相似但不完全相等文档。...前缀匹配:prefix 前缀匹配通过指定一个前缀值,搜索并匹配索引中指定字段文档,找出那些以该前缀开头结果。 Elasticsearch ,可以使用 prefix 查询来执行前缀搜索。...,其中 * 表示匹配任意数量(包括零个)字符,而 ? 则表示匹配一个字符。 通配符搜索,可以搜索词中使用通配符字符,将其替换为要匹配任意字符或字符序列。...语法: 正则表达式匹配查询,flags 参数是一个字符串,它可以包含多个选项,并用逗号分隔。每个选项都由一个字母表示。...match_phrase_prefix 查询是一种结合了短语匹配和前缀匹配查询方式。它用于某个字段匹配包含指定短语前缀文档。

41310

触类旁通Elasticsearch:分析

Elasticsearch In Action》学习笔记。 一、什么是分析 分析(analysis)是文档被发送并加入倒排索引之前,ES在其主体上进行操作。...搜索索引执行之前,根据所使用查询类型,分析同样可以运用到搜索文本。如match、match_phrase搜索之前会对文本执行分析步骤,而term和terms则不会。...二、分析文档 有以下两种方式指定字段所使用分析器: 创建索引时,为特定索引进行设置。 ES配置文件,设置全局分析器。...下面的例子elasticsearch.yml配置文件设置分析器。这里定制分析器和前面的一样,不过是YAML里设置。...“spaghetti”例子,如果min_gram为2,max_gram为6,那么将获得如下分词:sp、spa、spag、spagh、spaghe。

1.4K31

Elasticsearch 警惕使用 wildcard 检索!然后呢?

Elasticsearch wildcard 使用方式如下: ? 通配符运算符是匹配一个或多个字符占位符。 通配符支持两种: ? : 支持模糊匹配单个字符。举例:Ma?...2、Ik 词典main.dic 非原生,做了互联网词库扩展,但词库依然没有“刘强东”三个字。 3、如果你本地测试结果和文章不一致,极大可能是词典不一样导致。... wood 大叔 2017年文章,曾经指出如下核心点: 4.1 出现问题 用户输入字符串长度没有做限制,导致首尾通配符中间可能是很长一个字符串。...源码及细节推荐阅读: https://elasticsearch.cn/article/171 https://elasticsearch.cn/article/186 5、wildcard 实战悲剧...6、wildcard 可能替代方案 寻求解决方案时候,我们要先问一下:为什么大家喜欢用 wildcard 实现模糊检索?

5.5K60

使用 Elasticsearch NGram 分词器处理模糊匹配

接到一个任务:用 Elasticsearch 实现搜索银行支行名称功能。大概就是用户输入一截支行名称或拼音首字母,返回相应支行名称。...比如,用户输入"工行"或者"gh",我需要返回"工行XXX分行"类似这样结果。 我心里嘀咕着:数据库不是支持通配符查询吗?为什么不直接用数据库查询? 说归说,但是任务还是要完成。...之前有在网上看过一篇文章,主要就是说用 Elasticsearch 处理通配符查询不太适合,然后我评论中看到作者推荐了一个分词器 NGram。...tokenizer": { "ngram_tokenizer": { "type": "ngram", "min_gram": 1, "max_gram...analyzer 被指定为 ngram_analyzer,这个字段查询就都会变成通配符查询,无论是 term 还是 match。

2.6K60

Elasticsearch 警惕使用 wildcard 检索!然后呢?

类似 Mysql like 模糊匹配,如下所示: Elasticsearch wildcard 使用方式如下: 通配符运算符是匹配一个或多个字符占位符。 通配符支持两种: ?...2、Ik 词典main.dic 非原生,做了互联网词库扩展,但词库依然没有“刘强东”三个字。 3、如果你本地测试结果和文章不一致,极大可能是词典不一样导致。...如下示例可见一斑: wildcard 检索字段指定字符数多了以后,会报错如下: wood 大叔 2017年文章,曾经指出如下核心点: 4.1 出现问题 用户输入字符串长度没有做限制...源码及细节推荐阅读: https://elasticsearch.cn/article/171 https://elasticsearch.cn/article/186 5、wildcard 实战悲剧...6、wildcard 可能替代方案 寻求解决方案时候,我们要先问一下:为什么大家喜欢用 wildcard 实现模糊检索?

91540

第18篇-用ElasticSearch索引MongoDB,一个简单自动完成索引项目

07.Elasticsearch映射方式—简洁版教程 08.Elasticsearch分析和分析器应用 09.Elasticsearch构建自定义分析器 10.Kibana科普-作为Elasticsearhc...那么,为什么我们要麻烦学习像Elastic Search这样新复杂技术,又为什么要在我们系统架构引入新复杂性呢?让我们看一下MongoDB文本搜索支持以找出原因。...这篇文章第二个目的是展示如何将现有的MongoDB文档导入到ElasticSearch全文索引文档。同样,自动完成示例很小,因此也可以一篇文章中进行解释。...例如,可能有一个分析器删除了所谓停用词,这是非常常见词,它们不提供任何有用索引信息,例如 第一个负责标记字符串之前清理字符串,例如通过剥离HTML标签。...我们例子,我们想索引 fulltext 数据库所有文章。

5.2K00

Elasticsearch 空间换时间线上问题说开去......

——题目来源:死磕Elasticsearch 知识星球https://t.zsxq.com/08rmVBnhA 2、问题释义 大前提:商品码存储类似之前咱们视频讲过手机号存储,传统分词器(默认...3、Elasticsearch 空间换时间 啥叫空间换时间,拿当下世界杯例子一看就明白。 如下解说员说:“15人才能打赢”。15人比正常11人远多4人,这就是多了空间,而换取了时间或结果。...Elasticsearch Ngram 分词本质就是空间换时间方式,以极小粒度切分文档,空间存储激增、写入速度会受到影响,但换来了检索效率提升!...那么match_phrase 加上较大 slop 呢?能搞定吗?! 经反复测验,需要slop 至少设置 52 才可以搞定,如下所示。 为什么呢?为什么是 52 呢?...最大差值计算方法,比如:分词后词项“050”,待检索词位次为 15, 源文档“OWBB050C99JER0021001”为67。 差了:67-15=52。

52910

Elasticsearch 查询革新:探索 Wildcard 类型高效模糊匹配策略

1、背景 在生产使用Elasticsearch 除了精确匹配要求,也会有模糊查询场景。...为了实现通配符和正则表达式查询,Ealsticsearch 依赖 Lucene4.0 会将输入字符串模式构建成一个DFA (Deterministic Finite Automaton),而带有通配符...3、wildcard 类型使用详解 Elasticsearch wildcard 字段类型最早在 7.9 版本引入。...这一新特性主要针对了之前版本 wildcard 查询性能问题,提供了更高效方式来处理通配符和正则表达式搜索需求。...,官方推出该字段时候发布了相关说明: 新 wildcard 字段使用以下两种数据结构以这种方式自动加速通配符和正则表达式搜索: 字符串中所有3个字符序列 n-gram 索引。

2K20

Elasticsearch(五)

token建立倒排索引,而是将每个分词运用分词过滤器,分词作为输入,输入到分词过滤器,根据需要进行修改、添加或者是删除,最为常用分词过滤器小写分词过滤器,这也是为了保证搜索词条“nosql”时候可以找回...对这些分析器设置可以索引创建时,可以elasticsearch配置文件中进行配置,还可以映射中指定某个字段分析器。..."number_of_replicas":1 }, "mappings":{} }' setting可以对索引分析进行设置。..."] } } } } }, "mappings":{} }' elasticsearch配置添加分析器 索引创建时候设置分析器...,不需要重启ES就可以修改分析器,但是es配置中指定分析器,那么需要重启es后才能使得分析器修改生效,elasticsearch.yml设置分析器。

48310

【腾讯云ES】基于NGram分词ES搜索性能优化实践

背景商品搜索场景,需要根据用户输入关键字严格匹配商品数据,而普通全文检索方式,诸如:match 或者match_pharse,不一定能达到搜索效果。...关于严格匹配我们很容易就能想到模糊查询,es本身也是能支持模糊查询:方案选择方案一:模糊查询 wildcard && fuzzy 模糊查询功能有点类似 mysql like,可以使用正则表达式通配符来达到模糊搜索效果...wildcard 能同时支持 text 和 keyword 两种类型搜索,但是当输入字符串很长或者搜索数据集很大时,搜索性能很低,原因是ES使用是基于DFA文本匹配算法,时间复杂度(M+N),当索引里面的数据量为...使用过程我们可以通过自定义分析器,创建索引或者更新字段类型时,对它配置使用N-gram进行分词,简单且高效。...通过索引模版可以对指定字段配置ngram分词器,通过 template "match"来指定需要配置字段,能支持字段类型、字段名、路径、正则等多种匹配条件,也可以配置filter来对分词后token

2.9K40

Elasticsearch探索:部分匹配

如果启用,Elasticsearch会在一个单独字段索引2到5个字符之间前缀。 这使Elasticsearch可以以更大索引为代价更有效地运行前缀查询。...WITHIN:使用范围字段值完全查询范围内文档进行匹配。...例如,下面这些字符串是采用字典序(lexicographically)排序倒排索引词项就是采取字典顺序(lexicographically)排列,这也是字符串范围可以使用这个顺序来确定原因...但字符串却并非如此,要想对其使用范围过滤,Elasticsearch 实际上是在为范围内每个词项都执行 term 过滤器,这会比日期或数字范围过滤慢许多。...因此如果可以的话,最好在使用正则前,加上匹配前缀。正则如果使用.*?或者+都会降低查询性能。

2.1K41

听说你还没掌握Normalizer使用方法?

Elasticsearch 处理字符串类型数据时,如果我们想把整个字符串作为一个完整 term 存储,我们通常会将其类型 type 设定为 keyword。...1、Docs写入Elasticsearch时由于 type是 keyword,分词结果为原始字符串; 2、查询 Query 时分词默认是采用和字段写时相同配置,因此这里也是keyword,因此分词结果也是原始字符...; 3、两边分词进行对,便得出了我们上面的结果。...normalizer,其中filter 类似自定义分词器 filter ,但是可用种类很少,详情大家可以查看官方文档。...文档写入时由于加入了 normalizer,所有的 term都会被做小写处理 查询时搜索词同样采用有 normalizer配置,因此处理后 term也是小写 两边分词对,就得到了我们上面的结果

75940

Elasticsearch 8.X 有哪些自动补全检索方式?

1、自动补全或前缀匹配检索实现效果图 Elasticsearch 能实现自动补全检索方案很多,可以简单归结为如下几种不同方案: 方案一:Prefix 前缀匹配检索。..."} {"index":{"_id":6}} {"title":"世杯界16强决赛对阵表"} {"index":{"_id":7}} {"title":"卡塔尔世界杯为什么冬天"} 2、prefix...支持前缀完成(即匹配从输入开头开始术语)和中缀完成(即匹配输入任何位置术语)检索。...6、自动补全建议 suggesters 检索 6.1 Elasticsearch suggesters 介绍 Suggesters 是 Elasticsearch 高级解决方案,可根据用户输入文本返回外观相似的短语...6.2 Elasticsearch completion suggest 用法 创建索引及构造数据如下: 首先,需要在索引添加一个 suggest 字段。

1.1K30

Elasticsearch日志分析领域应用和运维实践

通过对词典单词前缀和后缀重复利用,压缩存储空间,压缩比率一般 3~20 倍之间。O( len ( str )) 查询时间复杂度。范围搜索,前缀搜索比传统 hashmap 有明显优势。...Logstash优点 提供了大量用于数据过滤,转换插件 drop: 丢掉不需要数据 grok : 正则匹配抓取数据 date : 从数据解析date属性,用作 Elasticsearch document...单节点配置:每个节点多少索引,多少 shard ,每个 shard 大小控制多少。 根据总数据量和单节点配置,得出集群总体规模。 单节点,根据经验通常 CPU :Memory配比是1:4。...Memory : Disk配比为 1 : 24 。 Elasticsearch heap xmx 设置通常不大于 32g 。...Memory 和 shard 配比 1 : 20 ~ 1:25 之间。 每个shard大小不超过50g 。

89620

Elasticsearch日志分析领域应用和运维实践

通过对词典单词前缀和后缀重复利用,压缩存储空间,压缩比率一般 3~20 倍之间。O( len ( str )) 查询时间复杂度。范围搜索,前缀搜索比传统 hashmap 有明显优势。...Logstash优点 提供了大量用于数据过滤,转换插件 drop: 丢掉不需要数据 grok : 正则匹配抓取数据 date : 从数据解析date属性,用作 Elasticsearch document...单节点配置:每个节点多少索引,多少 shard ,每个 shard 大小控制多少。 根据总数据量和单节点配置,得出集群总体规模。 单节点,根据经验通常 CPU :Memory配比是1:4。...Memory : Disk配比为 1 : 24 。 Elasticsearch heap xmx 设置通常不大于 32g 。...Memory 和 shard 配比 1 : 20 ~ 1:25 之间。 每个shard大小不超过50g 。

52620

第08篇-Elasticsearch分析和分析器应

07.Elasticsearch映射方式—简洁版教程 08.Elasticsearch分析和分析器应用 另外ES入门,我强烈推荐这篇Elasticsearch权威搭建指南给你,非常想尽指南手册...介绍 本系列第一个博客,我们看到了Elasticsearch对文档建立索引时反向索引计算,而在第二个博客,我们看到了Elasticsearch映射基础。...1.分析过程说明 为了了解Elasticsearch分析过程及其需求,我们需要对 inverted index Elasticsearch创建进行更深入了解。...为了更清楚地理解它,如果输入字符串包含重复出现拼写错误单词,而我们需要用正确单词替换它,那么我们可以使用字符过滤器对此进行相同处理。...这就是小写令牌过滤器对令牌作用。 有关Elasticsearch随附令牌过滤器列表 Elasticsearch,令牌过滤器最常见用例之一是向单词添加同义词。

3.1K00

Elasticsearch NGram 分词器使用技巧

它能根据文本步长逐步对写入文本内容进行约束切割; 二、NGram和index-time搜索推荐原理 搜索时候,不用再根据一个前缀,然后扫描整个倒排索引了,而是简单拿前缀去倒排索引匹配即可...官方介绍如下: image.png 链接:https://www.elastic.co/guide/en/elasticsearch/reference/6.8/analysis-ngram-tokenizer.html..."ngram_tokenizer": { "type": "ngram", "min_gram": 1, "max_gram...} 四、NGram分词与Match、Match_phrase实际使用问题 上面的案例,我们通过使用配置ngram分词可以正常切词,能够将上面的内容按照最小为1,最大 为5原则依次去切割组合成不同词...说到这里,客户还问“不同数据,搜索词,需要slop不一致,这个搜索代码里,无法指定,也不能通过代码取提前算。

13.3K182

Elasticsearch 常用 DSL 简析

Elasticsearch DSL DSL 即领域特定语言(Domain Specific Language),是指为特定领域设定专用语言。...使用 Elasticsearch DSL 可以构建复杂查询条件,实际操作中最为轻量便捷。以下是主流 ES 版本常用 DSL 分析。...查询时,首先分析查询字符串,然后根据分词构建查询对象,最后将结果返回。匹配查询各版本之间使用没有差别。...单一配查询 以下查询默认分词器(standard)下,会分为“this”、“is”、“a”、“test”,根据此分词结果构造一个布尔值,当“query”字段包含任一关键字时,都会返回此条 doc。...this is tencent cloud", "fields": [ "subject", "message" ] } } } term query term 查询会返回字段包含确切术语

2.7K30

Elasticsearch DSLQuery与Filter不同

Elasticsearch支持很多查询方式,其中一种就是DSL,它是把请求写在JSON里面,然后进行相关查询。...ElasticsearchDSL主要由两部分组成: Leaf query Cluase 暂且叫做叶查询子句吧 这种查询可以单独使用,针对某一特定字段查询特定值,比如match、term、range...Query与Filter 查询Query查询上下文和Filter过滤器上下文中,执行操作是不一样: 查询上下文: 查询上下文中,查询会回答这个问题——“这个文档不匹配这个查询,它相关度高么?...之前说过,ES索引数据都会存储一个_score分值,分值越高就代表越匹配。另外关于某个搜索分值计算还是很复杂,因此也需要一定时间。...查询上下文 是 使用query进行查询时执行环境,比如使用search时候。 过滤器上下文: 在过滤器上下文中,查询会回答这个问题——“这个文档不匹配?” 答案很简单,是或者不是。

86250
领券