mall学习笔记

Posted Capterlliar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mall学习笔记相关的知识,希望对你有一定的参考价值。

吃了香菜后花盆里长出了奇怪的植物,再看一眼

参考macrozheng的mall项目搭建的后端。

发现电脑带不动虚拟机于是选择Win10下开发(

1. Java连接MySQL出现CommunicationsException和SSLHandshakeException问题处理

解决方法:在连接url里加上useSSL=false

2. Win10下MinIO搭建

下载地址:MinIO | Code and downloads to create high performance object storage

下载服务端

编写bat

D:\\MinIO\\minio.exe server  D:\\MinIO\\file --console-address "localhost:9000"  --address "localhost:9090"

  ↑            ↑        ↑            ↑

下载的exe        存储文件路径    后台管理端口       api端口

双击bat即可打开服务。

3. 项目结构

controller:写controller的地方

mbg:mybatis generator(mbg)生成的代码

mbg下的两个generator是运行mbg的

service:controller要调用的service

application.yml:配置springboot

generator.properties:mbg配置变量

generatorComfig.xml:mbg配置文件

mbg官方文档:MyBatis Generator Core – MyBatis Generator XML Configuration File Reference

4. git amend后无法push

先本地amend,然后git push --force-with-lease origin master

顺便push的时候开梯子,pull的时候不要开

还有git无法上传空文件夹。。。

5. 今日进度

搭建骨架,回忆了下git,运行mbg添加PmsProductCategory接口,添加PmsProductCategory的controller和service文件,下次写具体代码,先跑通一个接口试试。

Elasticsearch学习笔记Search API 与 Query DSL

一、 Search API

eg: GET /mall/product/_search?q=name:productName&sort=price desc

特点:search的请求参数都是以HTTP请求的的query stirng 附带的

适用范围:适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息;

                 适用于简单的查询条件

二、Query DSL

将Query DSL视为ASL查询则有两种类型的查询语句:

    叶子查询语句(Leaf Query clause) :

            叶子查询语句根据指定的字段查询指定的值,比如match,term,rang查询(他们也可以自己嵌套自己查询)

     复合查询语句(compound query clause):

           复合查询语句包装了其他叶子查询语句或者复合查询语句,并被用于以逻辑方式组合多个查询(比如:bool和dis_max查询)或者改变他们的行为(比如constant_score查询)

查询语句的不同行为取决于查询语句是在query上下文还是在filter上下文内。

1、Query and filter Context

  (1)Query Context

       在Query Context中,一个查询语句用以回答“document与 查询语句 是有多么匹配”,除了决定document是否匹配,查询语句还计算一个表示document 匹配度的分值_score,相对于其他document。

无论何时一个查询语句被传递给query参数 query context都生效,就像search api里面的query参数

       注意:query参数是指  json body里面 query:{这里面的请求参数}

       (2)Filter Context

       在Filter Context中,一个查询语句用以回答“这个document是否匹配于查询语句”并不进行分值的计算。Filter Context通常被用于过滤结构化数据。

       经常被使用的Filter,Elasticsearch将自动进行缓存,以提升性能。

       无论何时一个查询语句传递给filter 参数,Filter Context都将生效,就像bool查询中的must_not参数和filter参数。而filter参数在constant_score查询或者filter聚合中。

2、Match All Query

        //匹配所有document,默认_score分值为1

            GET /_search

            {

                "query":{

                        "match_all":{}

                  }

            }

可以通过boost修改分值

            GET /_search

        {

            "query": {

                "match_all": { "boost" : 1.2 }

            }

        }

    match_none 与match_all相反,没有document与之匹配

              GET /_search

             {

                   "query":{

                            "match_none":{}

                    }

             }

3、Full text querise

  高水平的全文查询 通常用于在全文字段上进行全文查询,像在body和email上。他们清楚字段是如何被查询的并且在执行之前将每个字段的analyzer(或者analyzer_search)应用在字符串查询中。

(1) Match query

            标准的全文查询,包括模糊匹配,短语和近义词查询

            match查询接受text 文本,数字numeric,日期dates进行查询

            GET /_search

            {

               "query":{

                    "match":{

                          "message":"query text"        

                    }

                }

            }

其中,message字段会先被拆解,建立倒排索引

    1)match

            match查询是一个boolean类型。它意味着他不仅将分析所提供的文本而且在分析处理过程中还从提供的文本中钩子一个boolean类型的查询。 operate标记可以设置成or或者and 以控制boolean语句(默认为or),可以使用minimum_should_match参数设置匹配的最小数的可选的should语句

analyzer可以用于控制哪个分析器analyzer将执行文本的分析处理过程,字段默认精确匹配于定义信息或者默认搜索分析器。

lenient参数设置为true时将忽视由数据类型不匹配导致的异常信息,就像尝试用一个文本text查询字符串的方式查询一个数字字段。lenient参数默认情况下为false

2)Fuzziness 模糊匹配

           fuzziness允许基于查询的字段类型进行模糊匹配。

prefix_length和max_expansions可以用于控制模糊处理过程,在这种情况下。如果模糊选项设置成这样的查询将使用top_terms_blended_freqs_${max_expansions}作为他的重写方法,fuzzy_rewrite参数允许控制查询如何进行重写。

           fuzzy transpostions 模糊移项(ab->ba)默认情况下是允许的,但是也可以通过设置fuzzy_transpositions设置成false来禁用掉。

            GET /_search

            {

                "query":{

                    "match":{

                        "message":{

                            "query":"this is a test",

                            "operator":"and"

                        }

                    }

                }

            }

3)Zero terms query(zero_terms_query)

如果分析器移除查询里面的所有token就像stop过滤器所做的那样,那么默认的行为是将不匹配任何document。为了改变这些,可以使用zero_terms_query 选项,它接收默认值none和与match_all查询一致的all值

           GET /_search

           {

                "query":{

                    "match":{

                        "message":{

                            "query":"to be or not to be",

                            "operator":"and",

                           "zero_terms_query":"all"

                        }

                    }

                }

            }

4)Cutoff frequency(cutoff_frequency )

           match查询支持cutoff_frequency,即允许指定一个绝对的或者相对的文档频率。高频率的词组被移动至一个任意的子查询内。如果子查询存在一个低频词组 在or操作的情况下 和所有的低频词组 都在and操作匹配的情况下这些仅仅被存储起来。

            这些查询允许运行时动态处理stopwords的动作是领域独立的并且不需要一个分词stopwords文件。它阻止得分/迭代高频词组 并且只有更加有意义的或者低频的词组匹配一个文档时才考虑这些词组。但是,如果所有的查询词组

都在所给定的cutoff_frequency值之上,则将自动被传递给一个纯粹的连接词(and)查询以保证快速执行。

            cutoff_frequency要么与文档的总数相关如果在0到1范围内,要么绝对大于或者等于1.0

            以下这个例子展示了由专门分词组成的一个查询:

            GET /_search

            {

                "query":{

                    "match":{

                        "message":{

                            "query":" to be or not to be",

                            "cutoff_frequency":0.001

                        }

                    }

                }

            }

(2)Match Phrase Query(match_phrase)

          像match查询,但是被用于精确匹配短语或者近义词匹配

match_phrase查询分析指定的文本并从该分析文本中创建一个短语查询,如下:

            GET /_search

            {

                "query":{

                     "match_phrase":{

                         "message":"this is test"    

                     }

                 }

            }

在任何顺序中,短语查询匹配于一个可配置的slop(默认值为0)。转置的项有一个值为2的slop

       analyzer可以用于控制分析器将要执行的文本的分析过程。它默认为字段显示映射于定义或者默认的搜索分析器

               GET /_search

               {

                    "query":{

                        "match_phrase":{

                            "message":{

                                "query":"this is a text",

                                "analyzer":"my_analyzer"

                            }

                        }

                    }

                }

(3)Match Phrase Prefix Query(match_phrase_prefix)

官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html

以上是关于mall学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch学习笔记Search API 与 Query DSL

一个不容错过的Spring Cloud实战项目!

总结高频访问github项目

Could not find artifact cn.e3mall:e3mall-parent:pom:0.0.1-SNAPSHOT

The POM for cn.e3mall:e3mall-common:jar:0.0.1-SNAPSHOT is missing, no dependency information availab

Spring Boot Serverless 实战系列“部署篇” | Mall 应用