[ElasticSearch] 如何使用中文分詞ik與繁簡轉換stconvert插件

一. 環境安裝

ElasticSearch(以下簡稱ES)安裝已經算相對簡單了, 但要使用需要配置的插件, 對剛入門的新手還是有點麻煩, 所幸medcl大神提供一個配置好的ES-rtf版本, 新手們在參數配置上浪費無謂的時間。

Github上的elasticsearch-rtf , 裡面都有詳盡的使用說明, 這裡就不多說了.(P.S. ansj,string2int這兩個插件需使用Redis, 若不需要使用可以將這兩個插件移除)

二. 使用ik中文分詞插件

ik中文分詞插件例子在ES-Sense演示語法 ,

1. 創建名為myindex的index

PUT http://localhost:9200/myindex
2.在Type名為fulltext建立mapping, 若fulltext有資料ES會報錯
POST http://localhost:9200/myindex/fulltext/_mapping
{
    "fulltext": {
             "_all": {
            "indexAnalyzer": "ik",
            "searchAnalyzer": "ik",
            "term_vector": "no",
            "store": "false"
        },
        "properties": {
            "content": {
                "type": "string",
                "store": "no",
                "term_vector": "with_positions_offsets",
                "indexAnalyzer": "ik",
                "searchAnalyzer": "ik",
                "include_in_all": "true",
                "boost": 8
            }
        }
    }
}

3. 接下來我們可以在/index/fulltext建立一下資料了, 這裡將網站上content改為"content", 在Sense執行是都沒有問題的, 但使用Paly Framework在解析Json會出現問題, 所以最好補上雙引號

POST http://localhost:9200/myindex/fulltext/1
{"content":"美国留给伊拉克的是个烂摊子吗"}

POST http://localhost:9200/myindex/fulltext/2
{"content":"公安部:各地校车将享最高路权"}

POST http://localhost:9200/myindex/fulltext/3
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}

POST http://localhost:9200/myindex/fulltext/4
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}

4. 接下來我們用"中国"這個關鍵字做搜尋

POST http://localhost:9200/myindex/fulltext/_search
{
    "query" : { "term" : { "content" : "中国" }},
    "highlight" : {
        "pre_tags" : ["<tag1>", "<tag2>"],
        "post_tags" : ["</tag1>", "</tag2>"],
        "fields" : {
            "content" : {}
        }
    }
}

ik github上有搜尋的結果這裡就不顯示了

5. 如何輸入繁體"中國" 得出相同的搜尋結果呢?

GET /myindex/fulltext/_search?pretty
{
  query: {
    match: {
      content: {
        analyzer: "t2s_convert",
        query: "中國"

      }

    }

  },
   "highlight" : {
        "pre_tags" : ["<tag1>", "<tag2>"],
        "post_tags" : ["</tag1>", "</tag2>"],
        "fields" : {
            "content" : {}
        }
    }
}

analyzer: "t2s_convert"這指的是設定analyzer選擇用t2s_convert(繁 to 簡 轉換)

這樣就能繁體對簡體資料做搜尋囉。

[ElasticSearch] 如何使用中文分詞ik與繁簡轉換stconvert插件

时间: 2024-10-07 08:42:00

[ElasticSearch] 如何使用中文分詞ik與繁簡轉換stconvert插件的相关文章

如何在Elasticsearch中安装中文分词器(IK)和拼音分词器?

声明:我使用的Elasticsearch的版本是5.4.0,安装分词器前请先安装maven 一:安装maven https://github.com/apache/maven 说明: 安装maven需要java1.7+ 编译安装分词器时,可能会报错,报错信息如下: [ERROR] COMPILATION ERROR : [INFO] -------------------------------------------------------------[ERROR] No compiler i

我与solr(六)--solr6.0配置中文分词器IK Analyzer

转自:http://blog.csdn.net/linzhiqiang0316/article/details/51554217,表示感谢. 由于前面没有设置分词器,以至于查询的结果出入比较大,并且无法进行正确的高亮显示.现在配置一下分词器来解决相关问题. solr6.0中进行中文分词器IK Analyzer的配置和solr低版本中最大不同点在于IK Analyzer中jar包的引用.一般的IK分词jar包都是不能用的,因为IK分词中传统的jar不支持solr6.0这个高版本的,所以就会发送运行

PHPAnalysis中文分词类实用教程

PHPAnalysis是目前广泛使用的中文分词类,使用反向匹配模式分词,因此兼容编码更广泛,现将其变量与常用函数详解如下: 一.比较重要的成员变量$resultType = 1 生成的分词结果数据类型(1 为全部, 2为 词典词汇及单个中日韩简繁字符及英文, 3 为词典词汇及英文) 这个变量一般用 SetResultType( $rstype ) 这方法进行设置.$notSplitLen = 5 切分句子最短长度$toLower = false 把英文单词全部转小写$differMax = fa

jQuery - 中文輸入法與KeyDown/KeyPress事件

最近專案中引用了Telerik ASP.NET擴充元件AutoComplete輸入欄位,測試時發現偶爾會不聽始喚,輸入文字時無法觸發資料查詢,在Javascript Source Code裡反覆追蹤測試,燃燒了可觀的寶貴春青,終於理出頭緒: 問題在中文輸入法! 過去模糊地知道中文輸入在瀏覽器的鍵盤事件行為上有些特殊,但從未深究,這回算是比較清楚研究其中的差別.其實最明顯的差異是: 切到中文輸入法後,輸入文字將不會觸發KeyPress事件,只會有KeyDown,而且傳回的e.keyCode會一律是

ElasticSearch的中文分词器ik

一.前言   为什么要在elasticsearch中要使用ik这样的中文分词呢,那是因为es提供的分词是英文分词,对于中文的分词就做的非常不好了,因此我们需要一个中文分词器来用于搜索和使用. 二.IK分词器的安装和使用 2.1.安装ik    我们可以从官方github上下载该插件,我们下载对应于我们使用的es的版本的ik,并且我们能够看到具体的安装步骤,可以有两种安装方法.      这里我们选择第一种方式:    重启es,我们就可以使用ik这个中文分词器了. 2.2.使用ik中文分词器  

elasticsearch 在查询中文时需要分字

作为新人的我,在使用的elasticsearch 时,常遇到一些问题,而今天遇到的问题就是:在使用elasticsearch 搜索中文时,无返回结果? 问题描述如下: 1.在kibana 上查看日志的内容是可以用中文进行搜索的,如下图所示:  然而,在我的代码里用中文进行查询时,却只会返回空,查询时使用的代码如下: /** * 执行搜索 * * @param queryBuilder * @param indexname * @param type * @return */ public voi

ElasticSearch中文分词器-IK分词器的使用

IK分词器的使用 首先我们通过Postman发送GET请求查询分词效果 GET http://localhost:9200/_analyze { "text":"农业银行" } 得到如下结果,可以发现es的默认分词器无法识别中文中农业.银行这样的词汇,而是简单的将每个字拆完分为一个词,这显然不符合我们的使用要求. { "tokens": [ { "token": "农", "start_offse

Docker 安装ElasticSearch的中文分词器IK

主要问题 一定要保证ElasticSearch和ElasticSearch插件的版本一致 我是用的是ElasticSearch是5.6.11版本 对应elasticsearch-analysis-ik-5.6.11 安装插件 在线安装 进入容器 docker exec -it elasticsearch /bin/bash 在线下载并安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analy

Elasticsearch实践(四):IK分词

环境:Elasticsearch 6.2.4 + Kibana 6.2.4 + ik 6.2.4 Elasticsearch默认也能对中文进行分词. 我们先来看看自带的中文分词效果: curl -XGET "http://localhost:9200/_analyze" -H 'Content-Type: application/json' -d '{"analyzer": "default","text": "今天