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

东莞制作公司网站的公司舆情监控系统

东莞制作公司网站的公司,舆情监控系统,线上推广方式和介绍,商城网站设计服务Elasticsearch中模糊匹配类的查询 文章目录 Elasticsearch中模糊匹配类的查询通配符查询前缀匹配查询正则匹配查询标准的正则操作特殊运算符操作 模糊化查询Fuzziness text类型同时配置keyword类型 Elasticsearch中模糊类查询主要有以下 Wildcard Query:通配符查询P…

Elasticsearch中模糊匹配类的查询

文章目录

  • Elasticsearch中模糊匹配类的查询
    • 通配符查询
    • 前缀匹配查询
    • 正则匹配查询
      • 标准的正则操作
      • 特殊运算符操作
    • 模糊化查询
      • Fuzziness
    • `text`类型同时配置`keyword`类型

Elasticsearch中模糊类查询主要有以下

  • Wildcard Query:通配符查询
  • Prefix Query:前缀匹配查询
  • Regexp Query:正则匹配查询
  • Fuzzy query :模糊查询
  • text类型同时配置keyword类型,同时支持全文搜索和精确查询

使用前,性能需要进行验证

通配符查询

通配符支持*?*可以代表任何字符序列,包含空字符; ?可以代表任一字符。

示例

GET /_search
{"query": {"wildcard" : { "user" : "ki*y" }}
}

前缀匹配查询

查询到匹配字段包含以给定开头的词的文档

示例

GET /_search
{ "query": {"prefix" : { "user" : "ki" }}
}

正则匹配查询

示例

GET /_search
{"query": {"regexp":{"name.first": "s.*y"}}
}GET /_search
{"query": {"regexp":{"name.first": {"value": "s.*y","flags" : "INTERSECTION|COMPLEMENT|EMPTY"}}}
}

以下是支持的正则表达式语法(Lucene正则表达式引擎与perl不兼容,但支持更小范围的操作符)

标准的正则操作

  • Anchoring 锚定正则表达式

    用来说明这是个正则表达式,使用 ^ 表示开头或 $ 表示结尾。

  • Allowed characters 允许使用的字符

    表达式中可以使用任何 Unicode 字符,但某些字符是保留字符,必须转义。标准的保留字符有:

    . ? + * | { } [ ] ( ) ” \

    如果启用了可选功能(见下文),这些字符也可能被保留:

    # @ & < > ~

    任何保留字符都可以用反斜杠\*转义,包括字面反斜杠字符:\\

    此外,任何字符(双引号除外)在被双引号包围时都按字面解释:john“@smith.com”

  • Match any character匹配任何字符

    .点可以匹配任何字符

    For string "abcde":

    ab... # match a.c.e # match

  • One-or-more 匹配一次或多次

    加号 + 可用来重复前面的最短模式一次或多次

    For string "aaabbb":

    a+b+ # match

    aa+bb+ # match

    a+.+ # match

    aa+bbb+ # match`

  • Zero-or-more 匹配0次或多次

    星号 * 可用来匹配前面最短模式的零次或多次。

    For string "aaabbb":

    a*b* # match

    a*b*c* # match

    .*bbb.* # match

    aaa*bbb* # match

  • **Zero-or-one **匹配0次或1次

    问号 ? 可用来匹配前面最短模式的零次或1次。

    For string "aaabbb":

    aaa?bbb? # match

    aaaa?bbbb? # match

    .....?.? # match

    aa?bb? # no match

  • Min-to-max匹配最小次数与最大次数

    大括号 {} 可用于指定前面最短模式重复的最少次数和(可选)最多次数。

    {x,y},x代表最小匹配次数,y代表最多匹配次数,y可选

    {5} 最少重复匹配5次

    {2,5} 最少重复匹配2次,最多重复匹配5次

    {2,} 最少重复匹配2次

    For string “aaabbb”:

    a{3}b{3} # match

    a{2,4}b{2,4} # match

    a{2,}b{2,} # match

    .{3}.{3} # match

    a{4}b{4} # no match

    a{4,6}b{4,6} # no match

    a{4,}b{4,} # no match`

  • Grouping 分组匹配

    括号() 可以用来组成子句型。

    For string "ababab":

    (ab)+ # match

    ab(ab)+ # match

    (..)+ # match

    (...)+ # no match

    (ab)* # match

    abab(ab)? # match

    ab(ab)? # no match

    (ab){3} # match

    (ab){1,2} # no match

  • Alternation

    管道符号 | 充当 OR 运算符。如果左侧或右侧的模式匹配,则匹配成功。交替适用于最长的模式,而不是最短的模式。

    For string "aabb":

    aabb|bbaa # match

    aacc|bb # no match

    aa(cc|bb) # match

    a+|b+ # no match

    a+b+|b+a+ # match

    a+(b|c)+ # match

  • Character classes

    方括号[]括起来的潜在字符范围可以表示为字符类。

    ^ 表示否定字符类。

    -表示一个字符范围,除非它是第一个字符或用反斜杠转义。

    The allowed forms are:

    [abc] # ‘a’ or ‘b’ or ‘c’

    [a-c] # ‘a’ or ‘b’ or ‘c’

    [-abc] # ‘-’ or ‘a’ or ‘b’ or ‘c’

    [abc\-] # ‘-’ or ‘a’ or ‘b’ or ‘c’

    [^abc] # any character except ‘a’ or ‘b’ or ‘c’

    [^a-c] # any character except ‘a’ or ‘b’ or ‘c’

    [^-abc] # any character except ‘-’ or ‘a’ or ‘b’ or ‘c’

    [^abc\-] # any character except ‘-’ or ‘a’ or ‘b’ or ‘c’

    For string abcd:

    ab[cd]+ # match

    [a-d]+ # match

    [^a-d]+ # no match

特殊运算符操作

flags 代表正则的支持特殊运算符的类型,取值元素有ALLCOMPLEMENTINTERSECTIONINTERVALANYSTRING

flags 参数默认为 ALL。不同的标志组合(用 |连接)可用于启用/禁用特定运算符:

{"regexp": {"username": {"value": "john~athon<1-5>","flags": "COMPLEMENT|INTERVAL"}}
}
  • Complement

    Complement模式下,最短的表达式,如果紧跟着转折号~,就会被否定的意思

    For instance, "ab~cd" means:

    • a 开头
    • b 开头
    • 后跟任意长度的字符串,除了 c 以外的任何字符串
    • d 结尾

    For the string "abcdef":

    ab~df # match

    ab~cf # match

    ab~cdef # no match

    a~(cb)def # match

    a~(bc)def # no match

    Enabled with the COMPLEMENT or ALL flags.

  • Interval

    Interval模式下,使用<>代表数据范围区间

    For string: "foo80":

    foo<1-100> # match

    foo<01-100> # match

    foo<001-100> # no match

    Enabled with the INTERVAL or ALL flags.

  • Intersection

    该模式下,双引号 “&” 连接两个表达式,两个表达式必须匹配。

    For string "aaabbb":

    aaa.+&.+bbb # match

    aaa&bbb # no match

    Using this feature usually means that you should rewrite your regular expression.Enabled with the INTERSECTION or ALL flags.

  • Any string

    符号 “@” 匹配整个字符串。这可以与上面的交集和补码结合起来,表达 “除了…之外的所有内容”。

    For instance:

    @&~(foo.+) # anything except string beginning with “foo”

    Enabled with the ANYSTRING or ALL flags.

模糊化查询

模糊查询会生成在模糊度指定的最大编辑距离内的匹配术语,然后检查术语字典,找出索引中实际存在的已生成术语。最终查询最多使用 max_expansions 匹配词。

示例

GET /_search
{"query": {"fuzzy" : { "user" : "ki" }}
}GET /_search
{"query": {"fuzzy" : {"user" : {"value": "ki","boost": 1.0,"fuzziness": 2,"prefix_length": 0,"max_expansions": 100}}}
}
参数名解释
fuzziness最大编辑距离. 默认 AUTO. 详细见Fuzziness章节
prefix_length不会被 “模糊化 ”的初始字符数。这有助于减少必须检查的术语数量。默认为 0
max_expansions模糊化查询将扩展到的术语的最大数量 Defaults to 50.
transpositionsWhether fuzzy transpositions (abba) are supported. Default is false.

Fuzziness

在查询 text or keyword 字段时,“模糊度 ”被解释为Levenshtein Edit Distance–一个字符串要与另一个字符串相同而需要更改的一个字符的数量。

Levenshtein Edit Distance(莱文斯坦编辑距离)表示两个字符串之间,一个字符串转换成另一个字符串需要最少编辑操作的次数,编辑操作分为插入一个字符,删除一个字符。

fuzziness 参数可指定为:

参数值说明
0, 1, 2数字值, 最大允许的Levenshtein编辑距离(或编辑次数)
AUTO根据词条长度生成编辑距离。可选择提供低距离和高距离参数 AUTO:[low],[high]。如果未指定,默认值为 3 和 6,相当于 AUTO:3,6,长度为:**0...2必须完全匹配3...5允许一次编辑>5**允许两次编辑AUTO通常是 fuzziness的首选值。

text类型同时配置keyword类型

一个字段同时是keyword和text,同时支持全文搜索和精确查询

示例

新建索引

PUT gudong20250423002
{"settings:": {"number_of_shards": 1,"number_of_replicas": 1},"mappings": {"_doc": {"properties": {"message": {"type": "keyword","fields": {"keyword": {"type": "keyword","ignore_above": 256}}}}}}
}PUT gudong20250423002
{"settings:": {"number_of_shards": 1,"number_of_replicas": 1},"mappings": {"_doc": {"properties": {"message": {"type": "keyword"}}}}
}

写入数据

POST gudong20250423001/doc
{"message":"中国江苏省南京市江北新区"}POST gudong20250423002/doc
{"message":"中国江苏省南京市江北新区"}

查询效果

GET gudong20250423001/_search
{"query": {"bool": {"filter": [{ "match": { "message": "中国" } }]}}
}{"took": 2,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 1,"max_score": 0,"hits": [{"_index": "gudong20250423001","_type": "doc","_id": "AZZhpkVj-8S4QQ2j15fP","_score": 0,"_source": {"message": "中国江苏省南京市江北新区"}}]}
}
GET gudong20250423002/_search
{"query": {"bool": {"filter": [{ "match": { "message": "中国" } }]}}
}{"took": 1,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 0,"max_score": null,"hits": []}
}

字段单纯配置keyword类型,则不支持模糊匹配(实际应该分词了,然后进行的匹配)

http://www.dtcms.com/wzjs/822530.html

相关文章:

  • 个人做外贸网站违法吗房地产信息管理系统软件
  • 启用中文域名大网站wordpress文章管理
  • 网站建设公司初心网站建设深圳给源码
  • flash 企业网站 源码网页制作三合一案例教程
  • 兰州网站建设实验总结全国较好的网站建设公司
  • 交互式网站开发技术有哪些网站设计与开发怎么做
  • 北京市房山建设培训学校网站宣传部网站建设计划书
  • 专题网站开发工具给我免费播放的电影在线观看
  • 恩施网站建设公司山东省建设资格注册中心网站
  • 一般请人做网站和app多少钱平台网站建设网站
  • 网站后台管理模板免费下载网站建设是前端么
  • 服装箱包网站建设网站建设太金手指六六二五
  • 佛山科技网站建设高端网站设计公司有
  • 潘多拉固件建设网站微信里的小程序不见了
  • 投资交易网站开发群辉wordpress端口
  • 凡客建站网临沂个人做网站
  • 网页设计模板素材网站大全做网站都需要什么步骤
  • 淄博做网站的公司都有哪些电子商务搭建平台
  • 推销什么企业做网站和app6企业网站的建设目的包含什么
  • 个人网站做支付接口小程序招商加盟平台
  • 常州市城市建设局网站南京设计公司前十名
  • 济南城之运维网络科技seo网站推广软件
  • 东莞网络营销型网站一站式做网站价格
  • 免费的黄金网站有哪些企业网站seo运营
  • 一款非常不错的seo网站优化公司源码西双版纳傣族自治州医院
  • 公司的网站怎么建设wordpress qqoq主题
  • 网站怎么换域名重庆网站建设子沃科技熊掌号
  • 农产品电子商务网站建设现状阿里巴巴网站icp编号怎么查
  • 网站备案主体信息变更wordpress搜索框样式
  • 伽师网站建设玉林城乡住房建设厅网站