ES6.8.6 为索引映射(Mapping)创建自定义分词器,测试分词匹配效果

文章目录

    • 环境
    • 创建索引:配置自定义分词器、字段指定分词器
      • 自定义分词器参数说明
      • 创建索引:`custom_analyzer_comment`
    • 使用索引中自定义的分词器进行分词分析
      • 自定义分词器`my_custom_analyzer`分词测试:
        • 测试中文停用词、英文字母转小写
        • 测试敏感词替换:根据分词字符过滤配置替换敏感词
      • 自定义分词器`my_custom_analyzer_enstop`分词测试
    • 附录
      • 在创建索引时出现的异常
        • illegal_state_exception --> only value lists are allowed in serialized settings
    • 参考链接

参考官网文档:
        【 ES创建自定义词语分析器(自定义分析器接收参数,demo示例)】
        【 ES创建索引时Mapping映射配置analyzer参数(为字段配置不同的分析器,demo示例)】

环境

  • elasticsearch6.8.6版本:已安装ik分词器、icu分词器、pinyin分词器(分词器版本要和es版本一致)
  • postman测试工具
  • 视图工具elasticsearch-head(https://github.com/mobz/elasticsearch-head)

注!
        以下postman截图中{{domain}}等于 http://127.0.0.1:9200

创建索引:配置自定义分词器、字段指定分词器

        配置的分词器使用专业的中文分词器(IK分词器),配置分词模式为(ik_smart),配置字符过滤(char_filters)、过滤令牌(filter)。

自定义分词器参数说明

        【ES官网关于自定义分词器的参数说明】
        【ES官网关于定义分词器,type参数说明】
        【ES官网关于构建内置或者自定义分词器tokenizer参数说明】
        【ES官网关于char-filters字符过滤配置】

image.png

创建索引:custom_analyzer_comment

        【ES官网,分词器API】

postman请求:
image.png
发送创建索引命令:参数有注释

# 创建索引:custom_analyzer_comment
PUT {{domain}}/custom_analyzer_comment


# 创建索引的参数:分词器配置、mapping字段映射配置
{
    "settings": {
        // 索引配置,配置分片
        "index": {
            "number_of_shards": "5",
            "number_of_replicas": "1"
        },
        // 分词器配置
        "analysis": {
            "analyzer": {
                // 把default的key替换为自定义分词器名称:(key)名称随意,但是该名称会被映射中字段配置为分词器
                "my_custom_analyzer": {
                    // 选项可缺省。类型设置为custom(自定义),或者缺省此配置
                    "type": "custom",
                    // 这是一个必填项。使用内置或者自定义的分词器,填写分词器名称。如:使用内置的simple分词器就填写simple;这里使用的是ik分词器,ik_smart
                    "tokenizer": "ik_smart",
                    // 类型数组。选择内置或者配置自定义配置-->字符过滤。如过滤一些中文敏感词
                    "char_filter": [
                        // 字符过滤器去除 HTML 元素(如)并解码 HTML 实体(如 <b> &amp; )
                        "html_strip",
                        // 字符筛选器将指定字符串的任何匹配项替换为指定的替换项
                        // 同时也支持自定义名称,需要到与analyzer对象同级的char_filter做单独配置
                        // 敏感词过滤配置
                        "my_sensitive"
                    ],
                    // 类型数组。选择内置或者配置自定义配置--> 令牌筛选过滤
                    "filter": [
                        // 英文全部转为小写的令牌过滤标记,此项内置。
                        "lowercase",
                        // 配置一个自定义的中文停用词
                        "chinese_stop_word"
                    ],
                    // 配置编制索引时的间隙:缺省值100,详情看官网
                    "position_increment_gap": 100
                },
                // 配置第二个英文停用词分析器
                "my_custom_analyzer_enstop": {
                    // 自定义分词器
                    "type": "custom",
                    // 同样使用ik分词器
                    "tokenizer": "ik_smart",
                    "filter": [
                        "lowercase",
                        // 英文停用词过滤
                        "english_stop_sord"
                    ]
                }
            },
            // 把字符过滤放在和analyzer同级,为mapping类型字符映射做自定义配置
            "char_filter": {
                "my_sensitive": {
                    // 为analyzer.my_custom_analyzer.char_filter.my_sensitive做单独配置
                    "type": "mapping",
                    // 比如做敏感词替换
                    "mappings": [
                        "操 => *",
                        "我操 => **",
                        "草 => 艹"
                    ]
                }
            },
            // 令牌过滤放在和analyzer同级,为filter中chinese_stop_word做自定义配置
            "filter": {
                // 配置自定义的中文停用词
                // 这个名字是analyzer中定义的中文停用词配置
                "chinese_stop_word": {
                    "type": "stop",
                    "stopwords": [
                        "嗯",
                        "啊",
                        "这",
                        "是",
                        "哦",
                        "噢",
                        "那"
                    ]
                },
                "english_stop_sord": {
                    "type": "stop",
                    "stopwords": "_english_"
                }
            }
        }
    },
    // 配置字段映射关系、配置字段类型、配置字段指定分词器
    "mapping": {
        "_doc": {
            "properties": {
                // 评论ID
                "id": {
                    "type": "long"
                },
                // 用户网名
                "username": {
                    "type": "text",
                    // 以下三个分词器同时生效:新增字段索引时、字段查询时
                    // analyzer:将索引指向my_custom_analyzer分词器
                    "analyzer": "my_custom_analyzer",
                    // search_analyzer:指向my_custom_analyzer_enstop分词器
                    "search_analyzer": "my_custom_analyzer_enstop",
                    // 指向my_custom_analyzer分词器,并保证不从一个被引用的短语中删除停用词
                    // 如:被引号括起来的短语“This is a sanmao”这里面的停用词不会被删除
                    "search_quote_analyzer": "my_custom_analyzer"
                },
                // 评论内容
                "comment_content": {
                    "type": "text",
                    "analyzer": "my_custom_analyzer",
                    "search_analyzer": "my_custom_analyzer_enstop",
                    "search_quote_analyzer": "my_custom_analyzer"
                },
                // 评论创建时间
                "create_date": {
                    "type": "date"
                },
                // 评论展示状态:1 允许展示 0 评论被屏蔽
                "show_status": {
                    "type": "int"
                },
                // 评论是否删除 1 已删除、0未删除
                "deleted": {
                    "type": "int"
                }
            }
        }
    }
}

使用索引中自定义的分词器进行分词分析

自定义分词器my_custom_analyzer分词测试:

分词结果查询:
        【ES6.8.6 分词器安装&使用、查询分词结果(内置分词器、icu、ik、pinyin分词器)-CSDN博客】

        my_custom_analyzer分词器:使用了ik_smart粗粒度分词器,支持过滤html标签、支持替换敏感词(替换的敏感词见请求参数)、支持英文全转为小写、支持中文停用词(自定义中文停用词,停用词见请求参数)

测试中文停用词、英文字母转小写

postman请求:image.png
请求命令:

GET /custom_analyzer_comment/_analyze

参数===>
{
    "analyzer": "my_custom_analyzer",
    "text": "这,这,这,你?啥也不是。答:哦,那是什么? | This is a SANMAO"
}

预期结果===>
"这",被停用,在分词中被删除;
"哦",被停用,在分词中被删除;
"那",被停用,在分词中被删除;(实际与预期不符,"那是"被分词为短语,所以"那"没有被停用)

分词结果:
        根据filter->chinese_stop_word中配置的停用词,未被组成短语的,都被在分词中删除,英文字母也都被转为了小写,返回结果符合预期。但是根据返回结果看,不止配置的中文停用词,英文停用词也在分词结果中被删除。

{
    "tokens": [
        {
            "token": "你",
            "start_offset": 6,
            "end_offset": 7,
            "type": "CN_CHAR",
            "position": 3
        },
        {
            "token": "啥",
            "start_offset": 8,
            "end_offset": 9,
            "type": "CN_CHAR",
            "position": 4
        },
        {
            "token": "也",
            "start_offset": 9,
            "end_offset": 10,
            "type": "CN_CHAR",
            "position": 5
        },
        {
            "token": "不是",
            "start_offset": 10,
            "end_offset": 12,
            "type": "CN_WORD",
            "position": 6
        },
        {
            "token": "答",
            "start_offset": 13,
            "end_offset": 14,
            "type": "CN_CHAR",
            "position": 7
        },
        {
            "token": "那是",
            "start_offset": 17,
            "end_offset": 19,
            "type": "CN_WORD",
            "position": 9
        },
        {
            "token": "什么",
            "start_offset": 19,
            "end_offset": 21,
            "type": "CN_WORD",
            "position": 10
        },
        {
            "token": "sanmao",
            "start_offset": 35,
            "end_offset": 41,
            "type": "ENGLISH",
            "position": 11
        }
    ]
}
测试敏感词替换:根据分词字符过滤配置替换敏感词

postman请求:
image.png
请求命令:

GET /custom_analyzer_comment/_analyze

参数===>
{
    "analyzer": "my_custom_analyzer",
    "text": "我草尼玛,你知道,你在说神马?操,我操,我草。这,真啥也不是!"
}

预期结果===>
"草",被替换"艹";
"操",被替换"*";(实际不符合预期,直接被删除了)
"我操",被替换"**";(实际不符合预期,直接被删除了)
"我草",被替换"我艹";

分词结果:
        敏感词替换分词生效。但是替换的星号直接在分词结果中被删除。

{
    "tokens": [
        {
            "token": "我",
            "start_offset": 0,
            "end_offset": 1,
            "type": "CN_CHAR",
            "position": 0
        },
        {
            "token": "艹",
            "start_offset": 1,
            "end_offset": 2,
            "type": "CN_CHAR",
            "position": 1
        },
        {
            "token": "尼玛",
            "start_offset": 2,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 2
        },
        {
            "token": "你",
            "start_offset": 5,
            "end_offset": 6,
            "type": "CN_CHAR",
            "position": 3
        },
        {
            "token": "知道",
            "start_offset": 6,
            "end_offset": 8,
            "type": "CN_WORD",
            "position": 4
        },
        {
            "token": "你",
            "start_offset": 9,
            "end_offset": 10,
            "type": "CN_CHAR",
            "position": 5
        },
        {
            "token": "在说",
            "start_offset": 10,
            "end_offset": 12,
            "type": "CN_WORD",
            "position": 6
        },
        {
            "token": "神马",
            "start_offset": 12,
            "end_offset": 14,
            "type": "CN_WORD",
            "position": 7
        },
        {
            "token": "我",
            "start_offset": 20,
            "end_offset": 21,
            "type": "CN_CHAR",
            "position": 8
        },
        {
            "token": "艹",
            "start_offset": 21,
            "end_offset": 22,
            "type": "CN_CHAR",
            "position": 9
        },
        {
            "token": "真",
            "start_offset": 25,
            "end_offset": 26,
            "type": "CN_CHAR",
            "position": 11
        },
        {
            "token": "啥",
            "start_offset": 26,
            "end_offset": 27,
            "type": "CN_CHAR",
            "position": 12
        },
        {
            "token": "也",
            "start_offset": 27,
            "end_offset": 28,
            "type": "CN_CHAR",
            "position": 13
        },
        {
            "token": "不是",
            "start_offset": 28,
            "end_offset": 30,
            "type": "CN_WORD",
            "position": 14
        }
    ]
}

自定义分词器my_custom_analyzer_enstop分词测试

        my_custom_analyzer_enstop分词器:使用了ik_smart粗粒度分词器,支持英文全转为小写、支持英文停用词。
postman测试:综合测试,敏感词,中文停用词、大小写是否会如预期被分词器处理。

image.png
请求命令:

# 测试分词结果
GET /custom_analyzer_comment/_analyze


# 参数 ==>
{
    "analyzer": "my_custom_analyzer_enstop",
    "text": "我草尼玛,你知道,你在说神马?操,我操,我草。这,真啥也不是!| This is a SANMAO"
}

分词结果:
        敏感词没有替换、中文停用词没有替换,符合预期分词;
        英文停用词删除、英文大小转小写,符合预期分词;

{
    "tokens": [
        {
            "token": "我",
            "start_offset": 0,
            "end_offset": 1,
            "type": "CN_CHAR",
            "position": 0
        },
        {
            "token": "草",
            "start_offset": 1,
            "end_offset": 2,
            "type": "CN_CHAR",
            "position": 1
        },
        {
            "token": "尼玛",
            "start_offset": 2,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 2
        },
        {
            "token": "你",
            "start_offset": 5,
            "end_offset": 6,
            "type": "CN_CHAR",
            "position": 3
        },
        {
            "token": "知道",
            "start_offset": 6,
            "end_offset": 8,
            "type": "CN_WORD",
            "position": 4
        },
        {
            "token": "你",
            "start_offset": 9,
            "end_offset": 10,
            "type": "CN_CHAR",
            "position": 5
        },
        {
            "token": "在说",
            "start_offset": 10,
            "end_offset": 12,
            "type": "CN_WORD",
            "position": 6
        },
        {
            "token": "神马",
            "start_offset": 12,
            "end_offset": 14,
            "type": "CN_WORD",
            "position": 7
        },
        {
            "token": "操",
            "start_offset": 15,
            "end_offset": 16,
            "type": "CN_CHAR",
            "position": 8
        },
        {
            "token": "我",
            "start_offset": 17,
            "end_offset": 18,
            "type": "CN_CHAR",
            "position": 9
        },
        {
            "token": "操",
            "start_offset": 18,
            "end_offset": 19,
            "type": "CN_CHAR",
            "position": 10
        },
        {
            "token": "我",
            "start_offset": 20,
            "end_offset": 21,
            "type": "CN_CHAR",
            "position": 11
        },
        {
            "token": "草",
            "start_offset": 21,
            "end_offset": 22,
            "type": "CN_CHAR",
            "position": 12
        },
        {
            "token": "这",
            "start_offset": 23,
            "end_offset": 24,
            "type": "CN_CHAR",
            "position": 13
        },
        {
            "token": "真",
            "start_offset": 25,
            "end_offset": 26,
            "type": "CN_CHAR",
            "position": 14
        },
        {
            "token": "啥",
            "start_offset": 26,
            "end_offset": 27,
            "type": "CN_CHAR",
            "position": 15
        },
        {
            "token": "也",
            "start_offset": 27,
            "end_offset": 28,
            "type": "CN_CHAR",
            "position": 16
        },
        {
            "token": "不是",
            "start_offset": 28,
            "end_offset": 30,
            "type": "CN_WORD",
            "position": 17
        },
        {
            "token": "sanmao",
            "start_offset": 43,
            "end_offset": 49,
            "type": "ENGLISH",
            "position": 18
        }
    ]
}

附录

在创建索引时出现的异常

        可能因es版本不同,出现配置字段类型不一样。

illegal_state_exception --> only value lists are allowed in serialized settings

        错误原因:在序列化设置中仅允许值列表。分析是某个配置字段接收的参数类型不正确。

        错误返回:

{
    "error": {
        "caused_by": {
            "reason": "only value lists are allowed in serialized settings",
            "type": "illegal_state_exception"
        },
        "reason": "Failed to load settings from [{\"index\":{\"number_of_shards\":\"5\",\"number_of_replicas\":\"1\"},\"analysis\":{\"filter\":[{\"chinese_stop_word\":{\"type\":\"stop\",\"stopwords\":[\"嗯\",\"啊\",\"这\",\"是\",\"哦\",\"噢\",\"那\"]}}],\"char_filter\":[{\"mappings\":[\"操 => *\",\"我操 => **\",\"草 => 艹\"],\"type\":\"mapping\"}],\"analyzer\":{\"my_custom_analyzer_enstop\":{\"filter\":[\"lowercase\",\"english_stop\"],\"type\":\"custom\",\"tokenizer\":\"ik_smart\"},\"my_custom_analyzer\":{\"filter\":[\"lowercase\",\"chinese_stop_word\"],\"char_filter\":[\"html_strip\",\"mapping\"],\"position_increment_gap\":100,\"type\":\"custom\",\"tokenizer\":\"ik_smart\"}}}}]",
        "root_cause": [
            {
                "reason": "Failed to load settings from [{\"index\":{\"number_of_shards\":\"5\",\"number_of_replicas\":\"1\"},\"analysis\":{\"filter\":[{\"chinese_stop_word\":{\"type\":\"stop\",\"stopwords\":[\"嗯\",\"啊\",\"这\",\"是\",\"哦\",\"噢\",\"那\"]}}],\"char_filter\":[{\"mappings\":[\"操 => *\",\"我操 => **\",\"草 => 艹\"],\"type\":\"mapping\"}],\"analyzer\":{\"my_custom_analyzer_enstop\":{\"filter\":[\"lowercase\",\"english_stop\"],\"type\":\"custom\",\"tokenizer\":\"ik_smart\"},\"my_custom_analyzer\":{\"filter\":[\"lowercase\",\"chinese_stop_word\"],\"char_filter\":[\"html_strip\",\"mapping\"],\"position_increment_gap\":100,\"type\":\"custom\",\"tokenizer\":\"ik_smart\"}}}}]",
                "type": "settings_exception"
            }
        ],
        "type": "settings_exception"
    },
    "status": 500
}

        错误修改:

...
"char_filter": [
      {
          // 为analyzer.my_custom_analyzer.char_filter.mapping做单独配置
          "type": "mapping",
          // 比如做敏感词替换
          "mappings": [
              "操 => *",
              "我操 => **",
              "草 => 艹"
          ]
      }
  ]
...

修改为
...
"char_filter": {
      "my_sensitive": {
          // 为analyzer.my_custom_analyzer.char_filter.my_sensitive做单独配置
          "type": "mapping",
          // 比如做敏感词替换
          "mappings": [
              "操 => *",
              "我操 => **",
              "草 => 艹"
          ]
      }
  }
...

参考链接

elasticsearch中使用停用词过滤器_es停用词-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Parquet文件推送数据到OSS

1. 任务背景 任务说明&#xff1a;公司 saas 数据分析类产品&#xff0c;客户需要把行为数据回传到客户指定文件系统中&#xff08;oss&#xff09;周期&#xff1a;T1数据格式&#xff1a;parquet数据范围&#xff1a;部分表全量&#xff0c;部分表增量其他要求&#xff1a; …

STM32-LwESP 移植

LwESP 是一个专门解析 Espressif 公司旗下 ESP 系列芯片 AT 指令的开源库&#xff0c;具有以下特性&#xff1a; 支持 Espressif 公司 ESP32, ESP32-C2, ESP32-C3, ESP32-C6 和 ESP8266 芯片。独立平台&#xff0c;采用 C99 标准编写&#xff0c;易于移植。允许不同的配置来优…

【Linux】第三十九站:可重入函数、volatile、SIGCHLD信号

文章目录 一、可重入函数二、volatile三、SIGCHLD信号 一、可重入函数 如下图所示&#xff0c;当我们进行链表的头插的时候&#xff0c;我们刚刚执行完第一条语句的时候&#xff0c;突然收到一个信号&#xff0c;然后我们这个信号的自定义捕捉方法中&#xff0c;正好还有一个头…

Python模拟艾里光束:光可以不沿直线传播

文章目录 Airy光束有限能量Airy光束 Airy光束 在光学领域&#xff0c;傍轴近似下光束传输遵循方程 i ∂ ϕ ∂ z 1 z a ∂ 2 ϕ ∂ x 2 0 i\frac{\partial\phi}{\partial z}\frac{1}{z}\frac{a\partial^2\phi}{\partial x^2}0 i∂z∂ϕ​z1​∂x2a∂2ϕ​0 其中 k 2 π n …

【发展】不确定时代下的从容 —— 终局思维、长期主义与复利

文章目录 一、终局思维1、电影 《蝴蝶效应》2、未来是什么样的 二、长期主义1、这是一个不确定的时代2、做难但正确的事情 三、复利1、复利思维2、马太效应 一、终局思维 终局思维 在面对很多选择时&#xff0c;从终点出发考虑问题&#xff0c;来决定当下的选择。 1、电影 《蝴…

容器和虚拟机的对比

容器和虚拟机的对比 容器和虚拟机在与硬件和底层操作系统交互的方式上有所不同 虚拟化 使多个操作系统能够同时在一个硬件平台上运行。 使用虚拟机监控程序将硬件分为多个虚拟硬件系统&#xff0c;从而允许多个操作系统并行运行。 需要一个完整的操作系统环境来支持该应用。…

从零开始:CentOS系统下搭建DNS服务器的详细教程

前言 如果你希望在CentOS系统上建立自己的DNS服务器,那么这篇文章绝对是你不容错过的宝藏指南。我们提供了详尽的步骤和实用技巧,让你能够轻松完成搭建过程。从安装必要的软件到配置区域文件,我们都将一一为你呈现。无论你的身份是运维人员,还是程序员,抑或是对网络基础设…

GitLab16.8配置webhooks、Jenkins2.4配置GitLab插件实现持续集成、配置宝塔面板实现持续部署

看本篇文章的前提是已经部署完GItlab和Jenkins服务器&#xff0c;已经可以手动构建成功&#xff0c;并且经过了很多次实践&#xff0c;对这两款软件基本熟悉。 建议大家按以下顺序看 前端自动化&#xff08;其一&#xff09;部署gitlab https://blog.csdn.net/weixin_45062076…

DolphinScheduler + Amazon EMR Serverless 的集成实践

01 背景 Apache DolphinScheduler 是一个分布式的可视化 DAG 工作流任务调度开源系统&#xff0c;具有简单易用、高可靠、高扩展性、⽀持丰富的使用场景、提供多租户模式等特性。适用于企业级场景&#xff0c;提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方…

2024.1.24 C++QT 作业

思维导图 练习题 1.提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 #include <iostream> #include <string.h> #include <array> using namespace std;int main() {string str;cout << "…

《微信小程序开发从入门到实战》学习九十六

7.2 基础内容组件 7.2.4 progress组件 progress组件的示例代码如下&#xff1a; <progress percent"20" show-info /> 7.3 表单组件 表单组件是用于收集信息的组件。第三章介绍了许多表单组件&#xff0c;包括form、input、textarea、picker、switch、butt…

在WebSocket中使用Redis出现空指针异常解决方案

文章目录 在WebSocket中使用Redis1.问题描述2.原因3.解决步骤1.新建一个SpringUtil.java类&#xff0c;通过getBean的方法主动获取实例2.在WebSocketSingleServer.java中导入 在WebSocket中使用Redis 1.问题描述 在controller 和 service中都可以正常使用Redis&#xff0c;在…

【Javaweb程序设计】【C00161】基于SSM电子产品交易管理系统(论文+PPT)

基于SSM电子产品交易管理系统&#xff08;论文PPT&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的电子产品交易系统 本系统分为前台用户和后台管理员2个功能模块. 前台用户模块&#xff1a;当游客打开系统的网址后&#xff0c;首先看到的就…

qemu + vscode图形化调试linux kernel

一、背景 使用命令行连接gdb 在调试时&#xff0c;虽然可以通过tui enable 显示源码&#xff0c;但还是存在设置断点麻烦&#xff08;需要对着源码设置&#xff09;&#xff0c;terminal显示代码不方便&#xff0c;不利于我们学习&#xff1b;另外在gdb 下p命令显示结构体内容…

猫用空气净化器哪款牌子好?好用能吸毛的宠物空气净化器推荐

作为一个养猫多年的铲屎官&#xff0c;我真的无法抗拒猫星人的可爱魅力&#xff01;以前&#xff0c;每当我路过宠物店&#xff0c;我总会忍不住停下来&#xff0c;在玻璃窗前停留半个小时以上。但是后来&#xff0c;我终于有了自己的猫咪。每天都能享受到给它摸小肚子的乐趣&a…

腾讯云幻兽帕鲁服务器创建教程,附4核16G服务器价格表

腾讯云0基础搭建帕鲁服务器4C16G14M服务器稳定无卡顿&#xff0c;先下载SteamCMD&#xff0c;并运行&#xff1b;然后下载Palserver&#xff0c;修改服务ini配置&#xff0c;启动PalServer&#xff0c;进入游戏服务器。腾讯云百科txybk.com分享腾讯云创建幻兽帕鲁服务器教程&am…

gdb 调试 - 在vscode图形化展示在远程的gdb debug过程

前言 本地机器的操作系统是windows&#xff0c;远程机器的操作系统是linux&#xff0c;开发在远程机器完成&#xff0c;本地只能通过ssh登录到远程。现在目的是要在本地进行图形化展示在远程的gdb debug过程。&#xff08;注意这并不是gdb remote &#xff01;&#xff01;&am…

产业需求大数据平台

产业需求大数据平台&#xff0c;依托大数据、NLP等技术&#xff0c;全面采集区域产业人才需求数据&#xff0c;从宏观、中观、微观三个层面对产业需求进行分析&#xff0c;并匹配学校自身的办学定位、专业布局、人才培养目标、培养规格和课程设置&#xff0c;进行专业设置匹配度…

【JavaScript基础入门】03 JavaScript 基础语法(一)

JavaScript 基础语法&#xff08;一&#xff09; 目录 JavaScript 基础语法&#xff08;一&#xff09;1. JS 初体验2. JavaScript注释2.1 单行注释2.2 多行注释 3. JavaScript结束符4. JavaScript输入输出语句 1. JS 初体验 JS 有3种书写位置&#xff0c;分别为内联、内部和外…

2024.1.28 GNSS 学习笔记

1.基于 地球自转改正卫地距 以及 伪距码偏差 重构定位方程&#xff1a; 先验残差计算公式如下所示&#xff1a; 2.观测值如何定权&#xff1f;权重如何确定&#xff1f; 每个卫星的轨钟精度以及电离层模型修正后的误差都有差异&#xff0c;所以我们不能简单的将各个观测值等权…