zoukankan      html  css  js  c++  java
  • Elasticsearch中文分词+全文搜索

    中文分词+全文搜索

    本文假设你已经搭建好elasticsearch服务器,并在上面装了kibana和IK中文分词组件

    elasticsearch+kibana+ik的安装,之前的文章有介绍,可参考。

    mapping介绍:定义索引(index)类型(type)的元数据,包括:数据类型、分词行为、建立倒排索引行为、搜索行为等。在搜索的时候会根据这个mapping定义的分词行为、搜索行为进行搜索。

    1、创建索引

    1 PUT news

     2、创建mapping

     1 POST news/new/_mapping
     2 {
     3     "new": 
     4     {
     5         "properties": 
     6         {
     7             "title":
     8             {
     9                 "type": "text",
    10                 "fields": {
    11                     "keyword": 
    12                     {
    13                         "type": "keyword",
    14                         "ignore_above": 256
    15                     }
    16                 }
    17             },
    18             "content": 
    19             {
    20                 "type": "text",
    21                 "analyzer": "ik_max_word",
    22                 "search_analyzer": "ik_max_word"
    23             }
    24         }
    25     }
    26 }

    有两个字段:title和content

    3、插入数据

    1 PUT news/new/1
    2 {
    3   "title":"印度将因4大矛盾惨败中国 1项曾使印度国母被杀",
    4   "content":"一大堆最近中国和阿三闹矛盾词语,此处省略N字。。。"
    5 }
    1 PUT news/new/2
    2 {
    3   "title":"印度不要敬酒不吃吃罚酒满嘴跑火车 想想1962年",
    4   "content":"一大堆最近中国和阿三闹矛盾词语,此处省略N字。。。" 
    5 }
    1 PUT news/new/3
    2 {
    3   "title":"莫迪就中印对峙发声:靠“亚洲古老传统”解决问题",
    4   "content":"一大堆最近中国和阿三闹矛盾词语,此处省略N字。。。" 
    5 }

    4、全文检索+高亮显示

    全文检索:

     1 GET news/new/_search
     2 {
     3     "query" : 
     4     { 
     5       "match" : 
     6       { 
     7         "content" : "中国 印度 "
     8       }
     9     }
    10 }

    高亮显示

     1 GET news/new/_search
     2 {
     3         "query" : 
     4         { 
     5           "match" : 
     6             { 
     7                   "content" : "中国 印度 "
     8             }
     9         }
    10       , 
    11       "highlight":
    12       {
    13         "pre_tags" : ["<tag1>", "<tag2>"],
    14         "post_tags" : ["</tag1>", "</tag2>"],
    15         "fields" : {
    16             "content" : {}
    17         }
    18     }
    19 }

    elasticsearc实例讲解增删改查

    https://www.cnblogs.com/subendong/p/7295549.html

    1、首先弄明白四个概念

    elasticsearch 关系型数据库
    index 数据库
    type
    document
    field 字段

    如果刚一开始理解比较困难,那你就在心中默念100遍,10遍也可以。。。

    如果你做过面向对象开发,我觉得elasticsearch的这四个概念还是很好理解的。

    需要重点说明的是document就是一个json格式的字符串,里面包括N个字段。我们可以想象将面向对象语言里面的一个对象序列化成json字符串。

    关系型数据库需要先建库,再建表。elasticsearch不需要,在你新增的时候会根据你指定的index,type,document,field自动创建。当然先创建索引也是可以的。

    好文学习自:https://www.cnblogs.com/subendong/p/7308647.html

    下载及环境安装

    https://www.elastic.co/cn/downloads/elasticsearch

  • 相关阅读:
    BZOJ4407
    BZOJ 4804
    BZOJ 2820
    莫比乌斯反演入门
    BZOJ3261
    BZOJ 4327
    BZOJ1212
    AC自动机 板子
    派生类的访问控制-“三看”原则-派生类类成员访问级别设置的原则
    为什么不要重载 && 和 || 操作符!!!
  • 原文地址:https://www.cnblogs.com/zhaosq/p/11654042.html
Copyright © 2011-2022 走看看