Elasticsearch 邻近查询示例

系统 2069 0
Elasticsearch 邻近查询示例(全切分分词)
JAVA API方式:
          
            1
          
           SpanNearQueryBuilder span =
          
             QueryBuilders.spanNearQuery();


          
          
            2
          
           span.clause(QueryBuilders.spanTermQuery("Text", "学"
          
            ));


          
          
            3
          
           span.clause(QueryBuilders.spanTermQuery("Text", "联"
          
            ));


          
          
            4
          
           span.inOrder(
          
            true
          
          ).slop(1
          
            );


          
          
            5
          
           SearchRequestBuilder rs = client.prepareSearch("weiboall"
          
            )


          
          
            6
          
                           .setQuery(span).setFrom(0).setSize(20
          
            );


          
          
            7
          
           SearchResponse response = rs.get();
        
ES 邻近查询JavaAPI
REST方式(JSON):
        
           1
        
        
          {


        
        
           2
        
           "from": 0
        
          ,


        
        
           3
        
           "size": 20
        
          ,


        
        
           4
        
           "query"
        
          : {


        
        
           5
        
             "span_near"
        
          : {


        
        
           6
        
               "clauses"
        
          : [


        
        
           7
        
        
                  {


        
        
           8
        
                   "span_term"
        
          : {


        
        
           9
        
                     "Text"
        
          : {


        
        
          10
        
                       "value": "在"


        
          11
        
        
                      }


        
        
          12
        
        
                    }


        
        
          13
        
        
                  },


        
        
          14
        
        
                  {


        
        
          15
        
                   "span_term"
        
          : {


        
        
          16
        
                     "Text"
        
          : {


        
        
          17
        
                       "value": "讨"


        
          18
        
        
                      }


        
        
          19
        
        
                    }


        
        
          20
        
        
                  }


        
        
          21
        
        
                ],


        
        
          22
        
               "slop": 0
        
          ,


        
        
          23
        
               "in_order": 
        
          true
        
        
          24
        
        
              }


        
        
          25
        
        
            }


        
        
          26
        
         }
      
JSON邻近查询

 Elasticsearch 邻近查询示例(IK分词)

这种方式利用前后缀组合查询,可以识别查询中的未登陆词、新词等

java API方式:

        
           1
        
         MultiTermQueryBuilder mqb1 = 
        
          new
        
         WildcardQueryBuilder(
        
          "
        
        
          Text
        
        
          "
        
        , 
        
          "
        
        
          *学
        
        
          "
        
        
          );


        
        
           2
        
         SpanQueryBuilder sb1= 
        
          new
        
        
           SpanMultiTermQueryBuilder(mqb1);


        
        
           3
        
          MultiTermQueryBuilder mqb2 = 
        
          new
        
         WildcardQueryBuilder(
        
          "
        
        
          Text
        
        
          "
        
        , 
        
          "
        
        
          联*
        
        
          "
        
        
          );


        
        
           4
        
          SpanQueryBuilder sb2= 
        
          new
        
        
           SpanMultiTermQueryBuilder(mqb2);


        
        
           5
        
         SpanNearQueryBuilder spanb= 
        
          new
        
        
           SpanNearQueryBuilder();


        
        
           6
        
        
           spanb.clause(sb1);


        
        
           7
        
        
           spanb.clause(sb2);


        
        
           8
        
         spanb.inOrder(
        
          true
        
        
          );


        
        
           9
        
         spanb.slop(
        
          0
        
        
          );


        
        
          10
        
         SearchRequestBuilder rs = client.prepareSearch(
        
          "
        
        
          weiboall
        
        
          "
        
        
          )


        
        
          11
        
                         .setQuery(spanb).setFrom(
        
          0
        
        ).setSize(
        
          20
        
        
          );


        
        
          12
        
                 System.
        
          out
        
        
          .println(rs.toString());


        
        
          13
        
                 SearchResponse response = rs.
        
          get
        
        ();
      
View Code

Rest(json)方式:

        
           1
        
        
          {


        
        
           2
        
           "from" : 0
        
          ,


        
        
           3
        
           "size" : 20
        
          ,


        
        
           4
        
           "query"
        
           : {


        
        
           5
        
             "span_near"
        
           : {


        
        
           6
        
               "clauses"
        
           : [ {


        
        
           7
        
                 "span_multi"
        
           : {


        
        
           8
        
                   "match"
        
           : {


        
        
           9
        
                     "wildcard"
        
           : {


        
        
          10
        
                       "Text"
        
           : {


        
        
          11
        
                         "wildcard" : "*学"


        
          12
        
        
                        }


        
        
          13
        
        
                      }


        
        
          14
        
        
                    }


        
        
          15
        
        
                  }


        
        
          16
        
        
                }, {


        
        
          17
        
                 "span_multi"
        
           : {


        
        
          18
        
                   "match"
        
           : {


        
        
          19
        
                     "wildcard"
        
           : {


        
        
          20
        
                       "Text"
        
           : {


        
        
          21
        
                         "wildcard" : "联*"


        
          22
        
        
                        }


        
        
          23
        
        
                      }


        
        
          24
        
        
                    }


        
        
          25
        
        
                  }


        
        
          26
        
        
                } ],


        
        
          27
        
               "slop" : 0
        
          ,


        
        
          28
        
               "in_order" : 
        
          true
        
        
          29
        
        
              }


        
        
          30
        
        
            }


        
        
          31
        
         }
      
View Code

 

Elasticsearch 邻近查询示例


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论