ElasticSearch(10)-分詞器的使用

1.安裝smartcn瀏覽器

執行命令:安全

sh elasticsearch-plugin install analysis-smartcn

安裝成功elasticsearch

[es@localhost bin]$ sh elasticsearch-plugin install analysis-smartcn
-> Downloading analysis-smartcn from elastic
[=================================================] 100%
-> Installed analysis-smartcn

在pluins文件夾下會有analysis-smartcn文件夾post

重啓es服務(若是是集羣中,須要每一個節點都安裝,而後所有重啓)ui

驗證: 在瀏覽器中輸入:http://192.168.15.38:9200/_analyze/code

參數token

{
  "analyzer": "smartcn",
  "text": "我是中國人"
}

請求方式:post接口

結果:get

{
"tokens": [
{
"token": "我",
"start_offset": 0,
"end_offset": 1,
"type": "word",
"position": 0
}
,
{
"token": "是",
"start_offset": 1,
"end_offset": 2,
"type": "word",
"position": 1
}
,
{
"token": "中國",
"start_offset": 2,
"end_offset": 4,
"type": "word",
"position": 2
}
,
{
"token": "人",
"start_offset": 4,
"end_offset": 5,
"type": "word",
"position": 3
}
]
}

2.Java接口使用smartcn分詞器查詢it

要指定分詞器:analyzer("smartcn")方法

SearchRequestBuilder srb = client.prepareSearch("film2").setTypes("dongzuo");
        //組合多條件查詢01
        QueryBuilder requestBuilder = QueryBuilders.matchQuery("desc", "非洲迷宮").analyzer("smartcn");
        SearchResponse response = srb.setQuery(requestBuilder).setFetchSource(new String[]{"title", "desc"}, null).execute().actionGet();
        SearchHits hits = response.getHits();

        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }

執行結果:

smartcn會對查詢的內容進行分詞:"非洲"、"迷宮",而後去desc中查詢符合分詞的數據

{"title":"移動迷宮3:死亡解藥","desc":" 《移動迷宮3》做爲系列最終章,沿襲系列一向以來的勁爆動做戲和快節奏跑酷風,主要講述迪倫·奧布萊恩飾演的托馬斯率領的好萊塢「跑男團」在經歷了迷宮逃脫和末日喪屍的生死考驗後,終於迎來最後的正邪較量。 "}

{"title":"戰狼2","desc":"故事發生在非洲附近的大海上,主人公冷鋒(吳京 飾)遭遇人生滑鐵盧,被「開除軍籍」,本想漂泊一輩子的他,正當他打算這麼作的時候,一場突如其來的意外打破了他的計劃,忽然被捲入了一場非洲國家叛亂,本可

同時對多個字段進行查詢,例如查詢title和desc符合查詢內容的數據:

SearchRequestBuilder srb = client.prepareSearch("film2").setTypes("dongzuo");
        //組合多條件查詢01
      //  QueryBuilder requestBuilder = QueryBuilders.matchQuery("desc", "非洲迷宮").analyzer("smartcn");

        QueryBuilder requestBuilder = QueryBuilders.multiMatchQuery("星球大戰非洲迷宮","title","desc").analyzer("smartcn");
        SearchResponse response = srb.setQuery(requestBuilder).setFetchSource(new String[]{"title", "desc"}, null).execute().actionGet();
        SearchHits hits = response.getHits();

        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }

對查詢內容分詞:"星球大戰","非洲","迷宮"

查詢結果:

{"title":"移動迷宮3:死亡解藥","desc":" 《移動迷宮3》做爲系列最終章,沿襲系列一向以來的勁爆動做戲和快節奏跑酷風,主要講述迪倫·奧布萊恩飾演的托馬斯率領的好萊塢「跑男團」在經歷了迷宮逃脫和末日喪屍的生死考驗後,終於迎來最後的正邪較量。 "}

{"title":"戰狼2","desc":"故事發生在非洲附近的大海上,主人公冷鋒(吳京 飾)遭遇人生滑鐵盧,被「開除軍籍」,本想漂泊一輩子的他,正當他打算這麼作的時候,一場突如其來的意外打破了他的計劃,忽然被捲入了一場非洲國家叛亂,本能夠安全撤離,卻因沒法忘記曾經爲軍人的使命,孤身犯險衝回淪陷區,帶領身陷屠殺中的同胞和難民,展開生死逃亡。隨着鬥爭的持續,體內的狼性逐漸復甦,最終孤身闖入戰亂區域,爲同胞而戰鬥。"}

{"title":"星球大戰8:最後的絕地武士","desc":"《星球大戰:最後的絕地武士》承接前做《星球大戰:原力覺醒》的劇情,講述第一軍團全面侵襲之下,蕾伊(黛西·雷德利 Daisy Ridley 飾)、芬恩(約翰·博耶加 John Boyega 飾)、波·
相關文章
相關標籤/搜索