Elasticsearch 邻近查询示例

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)