Elasticsearch-模糊查询

模糊查询

  • 前缀搜索:prefix

    概念:以xx开头的搜索,不计算相关度评分。
    注意:
    • 前缀搜索匹配的是term,而不是field。

    • 前缀搜索的性能很差

    • 前缀搜索没有缓存

    • 前缀搜索尽可能把前缀长度设置的更长

      语法:
      GET <index>/_search
      {
      "query": {"prefix": {"<field>": {"value": "<word_prefix>"}}
      }
      }
      index_prefixes: 默认   "min_chars" : 2,   "max_chars" : 5 
      
PUT my_index
{"mappings": {"properties": {"text": {"analyzer": "ik_max_word","type": "text","index_prefixes":{"min_chars":2,"max_chars":4},"fields": {"keyword": {"type": "keyword","ignore_above": 256}}}}}
}

PUT my_index的含义是向Elasticsearch发送一个PUT请求来创建一个名为“my_index”的索引。
在Elasticsearch中,索引是用于存储和检索数据的容器。每个索引都有一个或多个映射(mapping),这些映射定义了索引中字段的类型、分析器、字段属性等。在提供的JSON中,“mappings"字段的作用是指定索引的映射定义。它定义了索引中包含的字段及其属性。
在"properties"字段下,定义了一个名为"text"的字段。该字段的配置如下:
“analyzer”: “ik_max_word”:指定使用"ik_max_word"分析器,这是一个用于中文分词的分析器。
“type”: “text”:字段类型设置为"text”,表示这是一个文本字段,可以用于全文搜索。
“index_prefixes”:定义了前缀搜索的参数,其中"min_chars"和"max_chars"分别表示最小和最大前缀长度。
“fields”:定义了多重字段(multi-fields),即一个字段可以有多个不同的表示。在这里,定义了一个名为"keyword"的子字段,其类型为"keyword",表示这是一个不分析的字段,通常用于精确匹配和排序。
"ik_max_word"是IK分词器的一个变种,用于中文分词。它试图将文本尽可能细粒度地分割成单词,以提供更好的全文搜索效果。
"index_prefixes"和"fields"的用途是提供对文本字段的额外索引方式。例如,"index_prefixes"使得可以使用前缀搜索,而"fields"中的"keyword"子字段使得可以进行精确匹配和排序,而不是基于分析器的全文搜索。
综合上述配置,这个映射定义了一个名为"text"的文本字段,该字段使用"ik_max_word"分析器进行中文分词,并提供了前缀搜索和精确匹配的不同索引方式。

GET my_index/_mapping
POST /my_index/_bulk?filter_path=items.*.error
{"index":{"_id":"1"}}
{"text":"城管打电话喊商贩去摆摊摊"}
{"index":{"_id":"2"}}
{"text":"笑果文化回应商贩老农去摆摊"}
{"index":{"_id":"3"}}
{"text":"老农耗时17年种出椅子树"}
{"index":{"_id":"4"}}
{"text":"夫妻结婚30多年AA制,被城管抓"}
{"index":{"_id":"5"}}
{"text":"黑人见义勇为阻止抢劫反被铐住"}
GET my_index/_search
GET my_index/_mapping
GET _analyze
{"analyzer": "ik_max_word","text": ["城管打电话喊商贩去摆摊摊"]
}
GET my_index/_search
{"query": {"prefix": {"text": {"value": "摊摊"}}}
}
# 通配符
DELETE my_index
POST /my_index/_bulk
{ "index": { "_id": "1"} }
{ "text": "my english" }
{ "index": { "_id": "2"} }
{ "text": "my english is good" }
{ "index": { "_id": "3"} }
{ "text": "my chinese is good" }
{ "index": { "_id": "4"} }
{ "text": "my japanese is nice" }
{ "index": { "_id": "5"} }
{ "text": "my disk is full" }
DELETE product_en
POST /product_en/_bulk
{ "index": { "_id": "1"} }
{ "title": "my english","desc" :  "shouji zhong de zhandouji","price" :  3999, "tags": [ "xingjiabi", "fashao", "buka", "1"]}
{ "index": { "_id": "2"} }
{ "title": "xiaomi nfc phone","desc" :  "zhichi quangongneng nfc,shouji zhong de jianjiji","price" :  4999, "tags": [ "xingjiabi", "fashao", "gongjiaoka" , "asd2fgas"]}
{ "index": { "_id": "3"} }
{ "title": "nfc phone","desc" :  "shouji zhong de hongzhaji","price" :  2999, "tags": [ "xingjiabi", "fashao", "menjinka" , "as345"]}
{ "title": { "_id": "4"} }
{ "text": "xiaomi erji","desc" :  "erji zhong de huangmenji","price" :  999, "tags": [ "low", "bufangshui", "yinzhicha", "4dsg" ]}
{ "index": { "_id": "5"} }
{ "title": "hongmi erji","desc" :  "erji zhong de kendeji","price" :  399, "tags": [ "lowbee", "xuhangduan", "zhiliangx" , "sdg5"]}
GET my_index/_search
GET product_en/_search
GET my_index/_mapping
GET product_en/_mapping
GET my_index/_search
{"query": {"wildcard": {"text.keyword": {"value": "my eng*ish"}}}
}GET my_index/_search 是一个Elasticsearch的HTTP请求,用于查询名为my_index的索引库中的所有文档。其中,_search是Elasticsearch的API端点,用于执行搜索查询。wildcard查询用于模糊匹配,支持通配符。*代表任意多个字符,?代表单个字符。在wildcard查询中,text.keyword字段表示要在text字段的keyword子字段中执行通配符查询。value属性是查询模式,用于匹配文档中的字段值。"value": "my eng*ish"表示查询text.keyword字段中包含"my"开头,以"ish"结尾,中间任意字符的字符串。例如,它会匹配"my english""my english speaking"等。整个查询请求的含义是:在my_index索引库中,查找text.keyword字段值匹配"my eng*ish"模式的所有文档。需要注意的是,wildcard查询可能不如其他类型的查询(如match、term)高效,因为它需要对索引进行全扫描,以找到匹配模式的文档。因此,在需要高效查询的场景中,可能需要选择其他类型的查询。GET product_en/_mapping
#exact value
GET product_en/_search
{"query": {"wildcard": {"tags.keyword": {"value": "men*inka"}}}
}
  • 正则:regexp

    概念:regexp查询的性能可以根据提供的正则表达式而有所不同。为了提高性能,应避免使用通配符模式,如.或 .?+未经前缀或后缀
    语法:
    GET <index>/_search
    {"query": {"regexp": {"<field>": {"value": "<regex>","flags": "ALL",}}}
    }
    
    flags
    • ALL

      启用所有可选操作符。

    • COMPLEMENT

      启用操作符。可以使用对下面最短的模式进行否定。例如

      a~bc # matches ‘adc’ and ‘aec’ but not ‘abc’

    • INTERVAL

      启用<>操作符。可以使用<>匹配数值范围。例如

      foo<1-100> # matches ‘foo1’, ‘foo2’ … ‘foo99’, ‘foo100’

      foo<01-100> # matches ‘foo01’, ‘foo02’ … ‘foo99’, ‘foo100’

    • INTERSECTION

      启用&操作符,它充当AND操作符。如果左边和右边的模式都匹配,则匹配成功。例如:

      aaa.+&.+bbb # matches ‘aaabbb’

    • ANYSTRING

      启用@操作符。您可以使用@来匹配任何整个字符串。
      您可以将@操作符与&和~操作符组合起来,创建一个“everything except”逻辑。例如:

      @&~(abc.+) # matches everything except terms beginning with ‘abc’

GET product_en/_search
{"query": {"regexp": {"title": "[\\s\\S]*nfc[\\s\\S]*"}}
}

该查询请求的含义是:在product_en索引中,通过正则表达式搜索title字段,查找包含nfc子串的文档。
解释如下:
GET product_en/_search:这是Elasticsearch的HTTP GET请求的基本结构,用于从product_en索引中检索数据。_search端点用于执行搜索查询。
“query"字段:在Elasticsearch查询中,query字段用于定义搜索条件。在此查询中,使用了regexp查询,它是基于正则表达式的查询。
“regexp"查询:regexp查询允许用户通过正则表达式模式来匹配文档中的字段值。在此查询中,它被用于匹配title字段。
正则表达式”[\s\S]nfc[\s\S]”:这个正则表达式的匹配规则如下:
[\s\S]:匹配任何字符,包括空格和非空格字符。
:匹配前面的字符零次或多次。
nfc:匹配字面字符串"nfc"。
再次使用[\s\S]
,表示"nfc"前后可以有任何字符(包括空格和非空格字符)。
因此,该正则表达式匹配title字段中包含"nfc"的文档,且"nfc"前后可以有任何字符。
综合以上信息,该查询请求在product_en索引中查找title字段中包含"nfc"的文档,且"nfc"前后可以有任何字符。

GET product_en/_search
{"query": {"regexp": {"desc": {"value": "zh~dng","flags": "COMPLEMENT"}}}
}

GET product_en/_search 是一个Elasticsearch的HTTP请求,用于查询名为product_en的索引库中的所有文档。_search是Elasticsearch的API端点,用于执行搜索查询。
在这个查询中,使用了正则表达式查询(regexp),用于匹配符合特定正则表达式的字段值。具体来说,它试图匹配desc字段中包含正则表达式zh~dng的文档。
“value”: "zhdng"表示要匹配的正则表达式。在正则表达式中,通常表示匹配一个单词的边界。但在这个例子中,zhdng可能并不是一个有效的正则表达式,因为通常用于单词边界,而zhdng更像是字符z、h、、d和n的序列,并没有明确的单词边界含义。
“flags”: "COMPLEMENT"表示使用的正则表达式标志。COMPLEMENT标志表示取反,即匹配所有不符合正则表达式的文档。
然而,zh~dng可能并不是一个合适的正则表达式,因为它并不符合常见的正则表达式语法和用途。通常,在Elasticsearch中使用正则表达式查询时,我们会期望value参数中的表达式是一个有效的正则表达式,用于匹配特定的字符串模式。
因此,这个查询可能并不会按照预期工作,除非desc字段中的文档确实包含zh~dng这个字符串,或者这个查询是用于测试某种特定的正则表达式行为。
需要注意的是,Elasticsearch的正则表达式查询是基于Apache Lucene的正则表达式引擎,所以正则表达式的语法和标志可能与其他语言或工具中的有所不同。
另外,使用COMPLEMENT标志时,请确保您的查询是清晰的,并且了解它将返回不符合正则表达式的文档。在实际应用中,确保您的正则表达式是有效的,并且与您的查询意图相匹配。

GET product_en/_search
{"query": {"regexp": {"tags.keyword": {"value": ".*<2-3>.*","flags": "INTERVAL"}}}
}

查询包含2-3的数据

这是一个Elasticsearch查询语句,用于在product_en索引中搜索数据。这个查询语句使用了正则表达式查询(regexp),它允许用户通过正则表达式模式来匹配文档中的字段值。
GET product_en/_search:
这部分是Elasticsearch的HTTP GET请求的基本结构,用于从product_en索引中检索数据。_search端点用于执行搜索查询。regexp查询:
regexp查询是Elasticsearch中的一种查询类型,它使用正则表达式来匹配文档中的字段值。这种查询类型特别适用于需要基于模式匹配的场景。
“tags.keyword”:
这表示查询的是tags.keyword字段。tags可能是一个包含多个标签的字段,而keyword通常表示该字段的值是精确匹配的,不会被分词。
“value”: “.<2-3>.”:
这是正则表达式的模式。这里的模式尝试匹配任何包含<2-3>字符串的文本。但是,.*<2-3>.*并不是一个有效的正则表达式,因为它没有定义<2-3>应该匹配的具体内容。通常,<2-3>会被当作字面量而不是正则表达式的一部分,这意味着它会尝试匹配包含这个字符串的文档。
“flags”: “INTERVAL”:
flags参数用于指定正则表达式的匹配选项。然而,INTERVAL并不是Elasticsearch中regexp查询的有效标志。标准的regexp标志包括ALL、ANYSTRING、COMPLEMENT、EMPTY、INTERSECTION、INTERVAL、NONE、NOTEMPTY和NOTNONE。其中,INTERVAL标志用于定义重复数量的区间,但它通常与{}一起使用,例如{2,3}表示匹配2到3次重复。在这里,flags的INTERVAL值可能是错误的,或者该查询可能尝试使用一个特定于应用程序或自定义的正则表达式标志。
这个查询整体上试图找到tags.keyword字段中包含<2-3>字符串的文档,但由于正则表达式模式不正确,以及flags参数中可能存在的错误,这个查询可能不会返回预期的结果。正确的正则表达式模式取决于<2-3>应如何解释,以及是否应该使用特定的标志来影响匹配过程。
这个查询可能适用于需要基于标签中的特定模式或特定值进行搜索的场景,例如,如果<2-3>是一个特定的标签值,并且你想找到所有包含这个标签的文档。然而,由于正则表达式和标志的错误,这个查询可能需要进行修正才能正常工作。

  • 模糊查询:fuzzy

    混淆字符 (box → fox) 缺少字符 (black → lack)

    多出字符 (sic → sick) 颠倒次序 (act → cat)

    语法
    GET <index>/_search
    {"query": {"fuzzy": {"<field>": {"value": "<keyword>"}}}
    }
    
    参数:
    • value:(必须,关键词)

    • fuzziness:编辑距离,(0,1,2)并非越大越好,召回率高但结果不准确

      1. 两段文本之间的Damerau-Levenshtein距离是使一个字符串与另一个字符串匹配所需的插入、删除、替换和调换的数量

      2. 距离公式:Levenshtein是lucene的,es改进版:Damerau-Levenshtein,

      axe=>aex Levenshtein=2 Damerau-Levenshtein=1

    • transpositions:(可选,布尔值)指示编辑是否包括两个相邻字符的变位(ab→ba)。默认为true。

GET product_en/_search
{"query": {"fuzzy": {  "desc": {"value": "zhandou","fuzziness": "2"}}}
}

该查询请求的含义是:在product_en索引中,使用模糊查询(fuzzy query)在desc字段中查找包含与"quangongneng nfc"相似词项的文档。
解释如下:
GET product_en/_search:这是Elasticsearch的HTTP GET请求的基本结构,用于从product_en索引中检索数据。_search端点用于执行搜索查询。
"query"字段:在Elasticsearch查询中,query字段用于定义搜索条件。在此查询中,使用了fuzzy查询,它是基于模糊匹配的查询,用于查找与指定词项相似的词项。
"fuzzy"查询:fuzzy查询在Elasticsearch中允许用户通过编辑距离(fuzziness)来匹配与指定词项相似的词项。它基于Levenshtein距离(也称为编辑距离)来度量两个词项之间的相似性。
“value"字段:value参数定义了要搜索的原始词项,即"quangongneng nfc”。
“fuzziness"字段:fuzziness参数定义了最大的编辑距离,用于确定与原始词项相似的词项。在这里,fuzziness设置为"2”,意味着查询将匹配与"quangongneng nfc"在最多两个字符内相似的词项。
综合以上信息:整个查询请求在product_en索引中查找desc字段中包含与"quangongneng nfc"相似的词项的文档,其中相似度由最多两个字符的编辑距离确定。
此查询将返回与"quangongneng nfc"在最多两个字符内相似的所有词项所在的文档。

GET product_en/_search
{"query": {"match_phrase_prefix": {"desc": {"query": "zhong hongzhaji","max_expansions": 50,"slop": 3}}}
}

这个查询请求的含义是:在product_en索引中,使用match_phrase_prefix查询在desc字段中查找与"zhong hongzhaji"相似词项的文档。
解释如下:
GET product_en/_search:这是一个Elasticsearch的HTTP GET请求,用于从product_en索引中检索数据。_search端点用于执行搜索查询。
match_phrase_prefix查询:这是一个特定类型的查询,它用于查找与指定词项在特定字段中相似(但不一定完全匹配)的词项。与match_phrase查询相比,match_phrase_prefix允许在最后一个词项上只匹配前缀,从而可以捕获更多与查询词项相似的词项。
“zhong hongzhaji”:这是搜索的查询词项,表示用户想要查找与"zhong hongzhaji"相关的内容。
max_expansions: 50:这个参数定义了最后一个词项可以被重写(扩展)成多少个前缀。这里设置为50,意味着将尝试生成最多50个前缀来匹配文档中的词项。
slop: 3:这个参数用于定义在匹配词项时,允许词项之间的最大位移量。这里的值为3,表示在匹配过程中,词项之间的最大距离为3个词项。
整个查询语句的意图:这个查询请求的目的是在product_en索引中查找与"zhong hongzhaji"相关的文档,通过扩展前缀和允许一定的词项位移量,以捕获更多相似但不完全匹配的文档。
应用场景:这个查询可能用于类似搜索引擎的场景,当用户输入部分搜索词时,系统能够自动补全或推荐与用户输入相似的完整词项,以提供更精确的搜索结果。例如,在电商网站中,用户可能输入"zhong"作为商品名称的一部分,系统可以推荐完整的商品名称,如"zhong xiao mi"或"zhong xing"等。
这个查询使用了Elasticsearch的match_phrase_prefix查询类型,它允许用户输入部分搜索词,并自动补全或推荐与用户输入相似的完整词项,从而提供更精确和相关的搜索结果。

GET _analyze
{"tokenizer": "ik_max_word","filter": [ "edge_ngram" ],"text": "reba always loves me"
}

PUT my_index
{"settings": {"analysis": {"filter": {"2_3_edge_ngram": {"type": "edge_ngram","min_gram": 2,"max_gram": 3}},"analyzer": {"my_edge_ngram": {"type":"custom","tokenizer": "standard","filter": [ "2_3_edge_ngram" ]}}}},"mappings": {"properties": {"text": {"type": "text","analyzer":"my_edge_ngram","search_analyzer": "standard"}}}
}
GET /my_index/_mappingPOST /my_index/_bulk
{ "index": { "_id": "1"} }
{ "text": "my english" }
{ "index": { "_id": "2"} }
{ "text": "my english is good" }
{ "index": { "_id": "3"} }
{ "text": "my chinese is good" }
{ "index": { "_id": "4"} }
{ "text": "my japanese is nice" }
{ "index": { "_id": "5"} }
{ "text": "my disk is full" }GET /my_index/_search
GET /my_index/_mapping
GET /my_index/_search
{"query": {"match_phrase": {"text": "my eng is goo"}}
}PUT my_index2
{"settings": {"analysis": {"filter": {"2_3_grams": {"type": "edge_ngram","min_gram": 2,"max_gram": 3}},"analyzer": {"my_edge_ngram": {"type":"custom","tokenizer": "standard","filter": [ "2_3_grams" ]}}}},"mappings": {"properties": {"text": {"type": "text","analyzer":"my_edge_ngram","search_analyzer": "standard"}}}
}
GET /my_index2/_mapping
POST /my_index2/_bulk
{ "index": { "_id": "1"} }
{ "text": "my english" }
{ "index": { "_id": "2"} }
{ "text": "my english is good" }
{ "index": { "_id": "3"} }
{ "text": "my chinese is good" }
{ "index": { "_id": "4"} }
{ "text": "my japanese is nice" }
{ "index": { "_id": "5"} }
{ "text": "my disk is full" }GET /my_index2/_search
{"query": {"match_phrase": {"text": "my eng is goo"}}
}GET _analyze
{"tokenizer": "ik_max_word","filter": [ "ngram" ],"text": "用心做皮肤,用脚做游戏"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/65545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

轮胎识别数据集,可对生产流水线里的轮胎图片标注,支持yolo,coco json,voc xml格式的标注,一共785张采集图片

轮胎识别数据集&#xff0c;可对生产流水线里的轮胎图片标注&#xff0c;支持yolo&#xff0c;coco json&#xff0c;voc xml格式的标注&#xff0c;一共785张采集图片 数据集分割 训练组90&#xff05; 706图片 有效集6% 46图片 测试集4% 33图片 预处理…

【RabbitMQ的死信队列】

死信队列 什么是死信队列死信队列的配置方式死信消息结构 什么是死信队列 消息被消费者确认拒绝。消费者把requeue参数设置为true(false)&#xff0c;并且在消费后&#xff0c;向RabbitMQ返回拒绝。channel.basicReject或者channel.basicNack。消息达到预设的TTL时限还一直没有…

Unity Dots理论学习-2.ECS有关的模块(1)

Unity的实体组件系统&#xff08;ECS&#xff09;是支撑DOTS模块和技术的面向数据架构。ECS为Unity中的内存数据和runtime进程调度提供了高度的控制和确定性。 ECS for Unity 2022 LTS 配备了两个兼容的物理引擎&#xff0c;一个高级的Netcode package&#xff0c;以及一个用来…

YOLOv10目标检测-训练自己的数据

yolov10 https://github.com/THU-MIG/yolov10?tabreadme-ov-file 1. 数据集 模型的建立需要收集图片并且进行标注。YOLOv10标注的文件格式如下&#xff08;每张图片对应一个标签文件&#xff09;&#xff1a; 0 0.441753 0.815461 0.061021 0.042763 1 0.395895 0.759868 …

《机器学习》——KNN算法

文章目录 KNN算法简介KNN算法——sklearnsklearn是什么&#xff1f;sklearn 安装sklearn 用法 KNN算法 ——距离公式KNN算法——实例分类问题完整代码——分类问题 回归问题完整代码 ——回归问题 KNN算法简介 一、KNN介绍 全称是k-nearest neighbors&#xff0c;通过寻找k个距…

C++ 设计模式:单例模式(Singleton Pattern)

链接&#xff1a;C 设计模式 链接&#xff1a;C 设计模式 - 享元模式 单例模式&#xff08;Singleton Pattern&#xff09;是创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问这个实例。单例模式在需要全局共享资源或控制实例数量的…

底层解析v-modle和v-bind在绑定数据时的内存模型上的区别

在Vue.js中&#xff0c;v-model和v-bind在内存和指针层面上的主要区别在于它们的数据绑定方式。 v-bind的内存模型 v-bind指令用于将父组件的数据绑定到子组件的某个属性上&#xff0c;这是一种单向的数据绑定。在内存模型中&#xff0c;v-bind只是将父组件中的数据值复制到子…

如何在 Ubuntu 22.04 上安装和使用 Composer

简介 如果你是一名 PHP 开发者&#xff0c;想要简化你的项目依赖管理&#xff0c;那么 Composer 是一个必不可少的工具。Composer 可以简化包管理&#xff0c;并允许你轻松地将外部库集成到你的项目中。 本教程将向你展示如何在 Ubuntu 22.04 操作系统上安装 Composer&#x…

139.《python中的正则详解》

文章目录 什么是正则正则表达式语法正则demo1.匹配模式2.finditer3.正则分组4.非捕获组5.分组的引用6. 正则替换7.正则切割7.正则「或」7.枚举取反 面试题 前言: 拉开差距的不是上班的8小时,而是下班后的16小时,同志们,加油,卷起!!! 什么是正则 1.正则表达式是一种高级文本处理…

大语言模型(LLM)中大数据的压缩存储及其重要性

在大型语言模型&#xff08;LLM&#xff09;中&#xff0c;KV Cache&#xff08;键值缓存&#xff09;的压缩方法及其重要性。 为什么要压缩KV Cache&#xff1f; 计算效率&#xff1a;在生成文本的过程中&#xff0c;每个生成的token都需要与之前所有的token的键值&#xff…

『大模型笔记』评估大型语言模型的指标:ELO评分,BLEU,困惑度和交叉熵介绍以及举例解释

评估大型语言模型的指标:ELO评分,BLEU,困惑度和交叉熵介绍以及举例解释 文章目录 一. ELO Rating大模型的elo得分如何理解1. Elo评分的基本原理2. 示例说明3. 大模型中的Elo得分总结3个模型之间如何比较计算,给出示例进行解释1. 基本原理扩展到三方2. 示例计算第一场: A A…

高效使用AI完成编程项目任务的指南:从需求分析到功能实现

随着人工智能工具的普及&#xff0c;即便是零编程基础或基础薄弱的用户&#xff0c;也可以借助AI完成许多技术任务。然而&#xff0c;要高效地使用AI完成编程任务&#xff0c;关键在于如何清晰表达需求&#xff0c;并逐步引导AI实现目标。 在本文中&#xff0c;我们将通过开发…

【视觉惯性SLAM:四、相机成像模型】

相机成像模型介绍 相机成像模型是计算机视觉和图像处理中的核心内容&#xff0c;它描述了真实三维世界如何通过相机映射到二维图像平面。相机成像模型通常包括针孔相机的基本成像原理、数学模型&#xff0c;以及在实际应用中如何处理相机的各种畸变现象。 一、针孔相机成像原…

【Compose multiplatform教程18】多平台资源的设置和配置

要正确配置项目以使用多平台资源&#xff0c;请执行以下操作&#xff1a; 添加库依赖项。 为每种资源创建必要的目录。 为限定资源创建其他目录&#xff08;例如&#xff0c;深色 UI 主题或本地化字符串的不同图像&#xff09;。 依赖项和目录设置 要访问多平台项目中的资源…

RabbitMQ工作模式(详解 工作模式:简单队列、工作队列、公平分发以及消息应答和消息持久化)

文章目录 十.RabbitMQ10.1 简单队列实现10.2 Work 模式&#xff08;工作队列&#xff09;10.3 公平分发10.4 RabbitMQ 消息应答与消息持久化消息应答概念配置 消息持久化概念配置 10.5 订阅模式广播模式路由模式主题模式&#xff08;通配符模式&#xff09; 10.6 消息确认机制1…

远离合群纷扰,回归生活本真

在这个纷繁复杂的世界里&#xff0c;有一个真相值得我们深刻领悟&#xff1a;圈子越小&#xff0c;生活往往越顺遂&#xff1b;社交越繁杂&#xff0c;麻烦与困扰便会如影随形。 远离熙攘的人群&#xff0c;仿若为自己构筑起一道抵御灾祸的坚固壁垒。过度地追求合群&#xff0…

Excel for Finance 07 `FV PV` 函数

Excel 的 FV 函数用于计算一笔投资在未来的价值&#xff0c;基于固定的利率和定期付款。这是一个金融函数&#xff0c;常用来分析储蓄计划、贷款、或投资的增长。 语法&#xff1a; FV(rate, nper, pmt, [pv], [type])参数说明&#xff1a; rate&#xff08;必需&#xff09;&…

React(二)——注册页/登录页/Reducer/

文章目录 项目地址一、使用Yarn安装所有环境二、文件结构以及路由配置三、登录和注册3.1 注册页面3.1.1 静态页面3.1.2 表单提交useSate3.2 登录页面3.3 admin 的登录页面四、关于auth登录和注册的Reducer4.1 authReducer创建4.2 根rootReducer的创建4.3 创建和配置Redux的stor…

每天五分钟深度学习框架pytorch:越来越深的卷积神经网络模型VGG

本文重点 前面我们使用pytorch搭建了卷积神经网络LeNet-5,AlexNet,本文我们学习卷积神经网络VGG,VGG相比于前面的两个神经网络而言比较深,我们知道网络模型越深那么就难以训练,但是VGG效果比较好。 Vgg使用了更小的滤波器,同时使用了更深的网络结构,AlexNet只有8层网络结…

小程序配置文件 —— 12 全局配置 - pages配置

全局配置 - pages配置 在根目录下的 app.json 文件中有一个 pages 字段&#xff0c;这里我们介绍一下 pages 字段的具体用法&#xff1b; pages 字段&#xff1a;用来指定小程序由哪些页面组成&#xff0c;用来让小程序知道由哪些页面组成以及页面定义在哪个目录&#xff0c;…