国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能

這篇具有很好參考價值的文章主要介紹了ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、自動補(bǔ)全

1.1、效果說明

1.2、安裝拼音分詞器

1.3、自定義分詞器

1.3.1、為什么要自定義分詞器

1.3.2、分詞器的構(gòu)成

1.3.3、自定義分詞器

1.3.4、面臨的問題和解決辦法

問題

解決方案

1.4、completion suggester 查詢

1.4.1、基本概念和語法

1.4.2、示例

1.4.3、示例(黑馬旅游)

a)修改 hotel 索引庫結(jié)構(gòu),設(shè)置自定義拼音分詞器.

b)給 HotelDoc 類添加 suggestion 字段

c)將數(shù)據(jù)重新導(dǎo)入到 hotel 索引庫中

d)基于 JavaRestClient 編寫 DSL

1.5、黑馬旅游案例

1.5.1、需求

1.5.2、前端對接

1.5.3、實現(xiàn) controller

1.5.4、創(chuàng)建接口并實現(xiàn).

1.5.5、效果展示


一、自動補(bǔ)全


1.1、效果說明

當(dāng)用戶在搜索框中輸入字符時,我們應(yīng)該提示出與該字符有關(guān)的搜索項.

例如百度中,輸入關(guān)鍵詞 "byby",他的效果如下:

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

1.2、安裝拼音分詞器

?要實現(xiàn)根據(jù)字母補(bǔ)全,就需要對文檔按照拼英分詞.? 在GitHub 上有一個 es 的拼英分詞插件.

地址:GitHub - medcl/elasticsearch-analysis-pinyin: This Pinyin Analysis plugin is used to do conversion between Chinese characters and Pinyin.

這里的安裝方式和 IK 分詞器一樣,分四步:

1. 安裝解壓.

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

2. 上傳到云服務(wù)器中,es 的 plugin 目錄.

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

3. 重啟 es.

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

4. 測試.

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

這里可以看到,拼音分詞器不光對每個字用拼音進(jìn)行分詞,還對每個字的首字母進(jìn)行分詞.

1.3、自定義分詞器

1.3.1、為什么要自定義分詞器

根據(jù)上述測試,可以看出.

1. 拼音分詞器是將一句話中的每一個字都分成了拼音,這沒什么實際的用處.

2. 這里并沒有分出漢字,只有拼英.? 實際的使用中,用戶更多的是使用漢字去搜,有拼音只是錦上添花,但是也不能只用拼音分詞器,把漢字丟了.

因此這里我們需要對拼音分詞器進(jìn)行一些自定義的配置.

1.3.2、分詞器的構(gòu)成

想要自定義分詞器,首先要先了解 es 中分詞器的構(gòu)成.

分詞器主要由以下三個部分組成:

  1. character filters:在 tokenizer 之前,對文本的特殊字符進(jìn)行處理. 比如他會把文本中出現(xiàn)的一些特殊字符轉(zhuǎn)化成漢字,例如?:) => 開心.
  2. tokenizer:將文本按照一定的規(guī)則切割成詞條(term). 例如 “我很開心” 會切割成 "我"、"很"、"開心".
  3. tokenizer filter:對?tokenizer 進(jìn)一步處理.? 例如將漢字轉(zhuǎn)化成拼音.

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

1.3.3、自定義分詞器

PUT /test
{
  "settings": {
    "analysis": {
      "analyzer": { //自定義分詞器
        "my_analyzer": { //自定義分詞器名稱
          "tokenizer": "ik_max_word",
          "filter": "py"
        }
      },
      "filter": {
        "py": { 
          "type": "pinyin",
          "keep_full_pinyin": false, 
          "keep_joined_full_pinyin": true,
          "keep_original": true,
          "limit_first_letter_length": 16,
          "remove_duplicated_term": true,
          "none_chinese_pinyin_tokenize": false
        }
      }
    }
  }
}
  • “type”: “pinyin”:指定使用拼音過濾器進(jìn)行拼音轉(zhuǎn)換。
  • “keep_full_pinyin”: false:表示不保留完整的拼音。如果設(shè)置為true,則會將完整的拼音保留下來。
  • “keep_joined_full_pinyin”: true:表示保留連接的完整拼音。當(dāng)設(shè)置為true時,如果某個詞的拼音有多個音節(jié),那么它們將被連接在一起作為一個完整的拼音。
  • “keep_original”: true:表示保留原始詞匯。當(dāng)設(shè)置為true時,原始的中文詞匯也會保留在分詞結(jié)果中。
  • “l(fā)imit_first_letter_length”: 16:限制拼音首字母的長度。默認(rèn)為16,即只保留拼音首字母的前16個字符。
  • “remove_duplicated_term”: true:表示移除重復(fù)的拼音詞匯。如果設(shè)置為true,則會移除拼音結(jié)果中的重復(fù)詞匯。
  • “none_chinese_pinyin_tokenize”: false:表示是否對非中文文本進(jìn)行拼音分詞處理。當(dāng)設(shè)置為false時,非中文文本將保留原樣,不進(jìn)行拼音分詞處理

例如,創(chuàng)建一個 test 索引庫,來測試自定義分詞器.

PUT /test
{
  "settings": {
    "analysis": {
      "analyzer": { 
        "my_analyzer": { 
          "tokenizer": "ik_max_word",
          "filter": "py"
        }
      },
      "filter": {
        "py": { 
          "type": "pinyin",
          "keep_full_pinyin": false,
          "keep_joined_full_pinyin": true,
          "keep_original": true,
          "limit_first_letter_length": 16,
          "remove_duplicated_term": true,
          "none_chinese_pinyin_tokenize": false
        }
      }
    }
  },
  
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "my_analyzer"
      }
    }
  }
}

使用此索引庫的分詞器進(jìn)行測試

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

從上圖中可以看出:

1.不光有拼音,還有中文分詞.

2.還有中文分詞后的英文全拼,以及分詞首字母.

1.3.4、面臨的問題和解決辦法

問題

上面實現(xiàn)的拼音分詞器還不能應(yīng)用到實際的生產(chǎn)環(huán)境中~

可以想象這樣一個場景:

如果詞庫中有這兩個詞:“獅子” 和 “虱子”,那么也就意味著,創(chuàng)建倒排索引時,通過上述自定義的 拼音分詞器 ,就會把這兩個詞歸為一個文檔,因為他們在分詞的時候,會分出共同的拼音 "shizi" 和 "sz",這就導(dǎo)致他兩的文檔編號對應(yīng)同一個詞條,導(dǎo)致將來用戶在搜索框里輸入 “獅子”?,點擊搜索之后,會同時搜索出 "獅子" 和 “虱子” ,這并不是我們想看到的.

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

解決方案

因此字段在創(chuàng)建倒排索引時因該使用 my_analyzer 分詞器,但是字段在搜索時應(yīng)該使用 ik_smart 分詞器.?

也就是說,用戶輸入中文的時候,就按中文去搜,用戶輸入拼音的時候,才按拼音去搜,即使出現(xiàn)上述情況,同時搜出這兩個詞,那你是按拼音搜,兩個都是符合的,不存在歧義.

如下:

PUT /test
{
  "settings": {
    "analysis": {
      "analyzer": { 
        "my_analyzer": { 
          "tokenizer": "ik_max_word",
          "filter": "py"
        }
      },
      "filter": {
        "py": { 
          "type": "pinyin",
          "keep_full_pinyin": false,
          "keep_joined_full_pinyin": true,
          "keep_original": true,
          "limit_first_letter_length": 16,
          "remove_duplicated_term": true,
          "none_chinese_pinyin_tokenize": false
        }
      }
    }
  },
  
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "my_analyzer" //創(chuàng)建倒排索引使用 my_analyzer 分詞器.
        "search_analyzer":?"ik_smart"  //搜索時使用 ik_smart 分詞器.
      }
    }
  }
}

1.4、completion suggester 查詢

1.4.1、基本概念和語法

es 中提供了 completion suggester 查詢來實現(xiàn)自動補(bǔ)全功能.? 這個查詢會匹配用戶輸入內(nèi)容開頭的詞條并返回.

為了提高補(bǔ)全查詢的效率,對于文檔中的字段類型有一些約束,如下:

  1. 參與補(bǔ)全查詢的字段必須是 completion 類型.
  2. 參與 自動補(bǔ)全字段 的內(nèi)容一般是多個詞條形成的數(shù)組.
POST /test2/_search
{
  "suggest": {
    "title_suggest": { //自定義補(bǔ)全名
      "text": "s",  //用戶在搜索框中輸入的關(guān)鍵字
      "completion": { // completion 是自動補(bǔ)全中的一種類型(最常用的)
        "field": "補(bǔ)全時需要查詢的字段名", //這里的字段名指向的是一個數(shù)組(字段必須是 completion 類型),就是要根據(jù)數(shù)組中的字段進(jìn)行查詢,然后自動補(bǔ)全
        "skip_duplicates": true,  //如果查詢時有重復(fù)的詞條,是否自動跳過(true 為跳過)
        "size": 10 // 獲取前 10 條結(jié)果.
      }
    }
  }
}

1.4.2、示例一

這里我用一個示例來演示?completion suggester 的用法.

首先創(chuàng)建索引庫(參與自動補(bǔ)全的字段類型必須是 completion).

PUT /test2
{
  "mappings": {
    "properties": {
      "title": {
        "type": "completion"
      }
    }
  }
}

插入示例數(shù)據(jù)(字段內(nèi)容一般是用來補(bǔ)全的多個詞條形成的數(shù)組.)

POST test2/_doc
{
 "title": ["Sony", "WH-1000XM3"]
}
POST test2/_doc
{
  "title": ["SK-II", "PITERA"]
}
POST test2/_doc
{
  "title": ["Nintendo", "switch"]
}

這里我們設(shè)置關(guān)鍵字為 "s",來自動補(bǔ)全查詢,如下:

POST /test2/_search
{
  "suggest": {
    "title_suggest": {
      "text": "s", 
      "completion": {
        "field": "title", 
        "skip_duplicates": true, 
        "size": 10
      }
    }
  }
}

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

1.4.3、示例二

首先創(chuàng)建索引庫,如下參與自動補(bǔ)全的字段為 suggestion(通過 copy title 得到).

PUT /test
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "ik_smart",
        "copy_to": "suggestion"
      },
      "suggestion": {
        "type": "completion"
      }
    }
  }
}

?插入示例數(shù)據(jù)

POST test/_doc/1
{
  "title": "今天天氣真好"
}

POST test/_doc/2
{
  "title": "我想出去玩"
}


POST test/_doc/3
{
  "title": "我要去找小伙伴"
}

設(shè)置關(guān)鍵字為 "我"

POST /test/_search
{
  "suggest": {
    "title_suggest": {
      "text": "我",
      "completion": {
        "field": "suggestion",
        "skip_duplicates": true,
        "size": 10
      }
    }
  }
}

自動補(bǔ)全效果如下

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

1.4.4、示例(黑馬旅游)

這里我們基于之前實現(xiàn)的黑馬旅游案例來做栗子,實現(xiàn)步驟如下:

a)修改 hotel 索引庫結(jié)構(gòu),設(shè)置自定義拼音分詞器.

1.設(shè)置自定義分詞器.

2. 修改索引庫的 name、all 字段(建立倒排索引使用 拼音分詞器,搜索時使用 ik 分詞器).

3. 給索引庫添加一個新字段 suggestion,類型為 completion 類型,使用自定義分詞器.

PUT /hotel
{
  "settings": {
    "analysis": {
      "analyzer": {
        "text_anlyzer": {
          "tokenizer": "ik_max_word",
          "filter": "py"
        },
        "completion_analyzer": {
          "tokenizer": "keyword",
          "filter": "py"
        }
      },
      "filter": {
        "py": {
          "type": "pinyin",
          "keep_full_pinyin": false,
          "keep_joined_full_pinyin": true,
          "keep_original": true,
          "limit_first_letter_length": 16,
          "remove_duplicated_term": true,
          "none_chinese_pinyin_tokenize": false
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "id":{
        "type": "keyword"
      },
      "name":{
        "type": "text",
        "analyzer": "text_anlyzer",
        "search_analyzer": "ik_smart",
        "copy_to": "all"
      },
      "address":{
        "type": "keyword",
        "index": false
      },
      "price":{
        "type": "integer"
      },
      "score":{
        "type": "integer"
      },
      "brand":{
        "type": "keyword",
        "copy_to": "all"
      },
      "city":{
        "type": "keyword"
      },
      "starName":{
        "type": "keyword"
      },
      "business":{
        "type": "keyword",
        "copy_to": "all"
      },
      "location":{
        "type": "geo_point"
      },
      "pic":{
        "type": "keyword",
        "index": false
      },
      "all":{
        "type": "text",
        "analyzer": "text_anlyzer",
        "search_analyzer": "ik_smart"
      },
      "suggestion":{
          "type": "completion",
          "analyzer": "completion_analyzer"
      }
    }
  }
}
b)給 HotelDoc 類添加 suggestion 字段

suggestion 字段(包含多個字段的數(shù)組,這里可以使用 List 表示),內(nèi)容包含 brand、business.

Ps:name、all 是可以分詞的,自動補(bǔ)全的 brand、business 是不可分詞的,要使用不同的分詞器組合.

@Data
@NoArgsConstructor
public class HotelDoc {
    private Long id;
    private String name;
    private String address;
    private Integer price;
    private Integer score;
    private String brand;
    private String city;
    private String starName;
    private String business;
    private String location;
    private String pic;
    private Object distance;
    private Boolean isAD;
    private List<String> suggestion;

    public HotelDoc(Hotel hotel) {
        this.id = hotel.getId();
        this.name = hotel.getName();
        this.address = hotel.getAddress();
        this.price = hotel.getPrice();
        this.score = hotel.getScore();
        this.brand = hotel.getBrand();
        this.city = hotel.getCity();
        this.starName = hotel.getStarName();
        this.business = hotel.getBusiness();
        this.location = hotel.getLatitude() + ", " + hotel.getLongitude();
        this.pic = hotel.getPic();
        this.suggestion = new ArrayList<>();
        suggestion.add(brand);
        suggestion.add(business);
    }
}
c)將數(shù)據(jù)重新導(dǎo)入到 hotel 索引庫中

將 hotel 索引庫刪了,然后重建(a 中的 DSL).? 通過單元測試將所有信息從數(shù)據(jù)庫同步到 es 上.

    @Test
    public void testBulkDocument() throws IOException {
        //1.獲取酒店所有數(shù)據(jù)
        List<Hotel> hotelList = hotelService.list();
        //2.構(gòu)造請求
        BulkRequest request = new BulkRequest();
        //3.準(zhǔn)備參數(shù)
        for(Hotel hotel : hotelList) {
            //轉(zhuǎn)化為文檔(主要是地理位置)
            HotelDoc hotelDoc = new HotelDoc(hotel);
            String json = objectMapper.writeValueAsString(hotelDoc);
            request.add(new IndexRequest("hotel").id(hotel.getId().toString()).source(json, XContentType.JSON));
        }
        //4.發(fā)送請求
        client.bulk(request, RequestOptions.DEFAULT);
    }
d)基于 JavaRestClient 編寫 DSL

例如自動補(bǔ)全關(guān)鍵為 "h" 的內(nèi)容.

    @Test
    public void testSuggestion() throws IOException {
        //1.創(chuàng)建請求
        SearchRequest request = new SearchRequest("hotel");
        //2.準(zhǔn)備參數(shù)
        request.source().suggest(new SuggestBuilder().addSuggestion(
            "testSuggestion",
                SuggestBuilders
                        .completionSuggestion("suggestion")
                        .prefix("h")
                        .skipDuplicates(true)
                        .size(10)
        ));
        //3.發(fā)送請求,接收響應(yīng)
        SearchResponse search = client.search(request, RequestOptions.DEFAULT);
        //4.解析響應(yīng)
        handlerResponse(search);
    }

這里可以對應(yīng)著 DSL 語句來寫.

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

對查詢結(jié)果的處理如下:

        //4.處理自動補(bǔ)全結(jié)果
        Suggest suggest = response.getSuggest();
        if(suggest != null) {
            CompletionSuggestion suggestion = suggest.getSuggestion("testSuggestion");
            for (CompletionSuggestion.Entry.Option option : suggestion.getOptions()) {
                String text = option.getText().toString();
                System.out.println(text);
            }
        }

這里可以對應(yīng)著 DSL 語句來寫.

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

運行結(jié)果如下:

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

1.5、黑馬旅游案例

1.5.1、需求

首先搜索框的自動補(bǔ)全功能.

最終實現(xiàn)效果就類似于 百度的搜索框,比如當(dāng)我們輸入 "byby",他就會立馬自動補(bǔ)全出有關(guān) byby 關(guān)鍵字的信息,如下圖:

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

1.5.2、前端對接

在搜索框中輸入,會觸發(fā)以下請求. 這里前端就傳入一個參數(shù) key.

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

這里約定,返回的是一個 List,內(nèi)容就是自動補(bǔ)全的所有信息.

1.5.3、實現(xiàn) controller

這里使用 @RequestParam 接收前端傳入的參數(shù),然后調(diào)用 IhotelService?接口處理即可.

    @RequestMapping("/suggestion")
    public List<String> suggestion(@RequestParam("key") String prefix) {
        return hotelService.suggestion(prefix);
    }

1.5.4、創(chuàng)建接口并實現(xiàn).

在 IhotelService 接口中創(chuàng)建 suggestion 方法.

public interface IHotelService extends IService<Hotel> {

    PageResult search(RequestParams params);

    Map<String, List<String>> filters(RequestParams params);

    List<String> suggestion(String prefix);
}

接著在 IhotelService 的實現(xiàn)類 HotelService 中實現(xiàn)該方法.

具體的實現(xiàn),就和前面寫的測試案例基本一致了~? 要注意的點就是補(bǔ)全的關(guān)鍵字不是寫死的,而是前端傳入的 prefix.

    @Override
    public List<String> suggestion(String prefix) {
        try {
            //1.創(chuàng)建請求
            SearchRequest request = new SearchRequest("hotel");
            //2.準(zhǔn)備參數(shù)
            request.source().suggest(new SuggestBuilder().addSuggestion(
                    "mySuggestion",
                    SuggestBuilders
                            .completionSuggestion("suggestion")
                            .prefix(prefix)
                            .skipDuplicates(true)
                            .size(10)
            ));
            //3.發(fā)送請求,接收響應(yīng)
            SearchResponse response = client.search(request, RequestOptions.DEFAULT);
            //4.解析響應(yīng)(處理自動補(bǔ)全結(jié)果)
            Suggest suggest = response.getSuggest();
            List<String> suggestionList = new ArrayList<>();
            if(suggest != null) {
                CompletionSuggestion suggestion = suggest.getSuggestion("mySuggestion");
                for (CompletionSuggestion.Entry.Option option : suggestion.getOptions()) {
                    String text = option.getText().toString();
                    suggestionList.add(text);
                }
            }
            return suggestionList;
        } catch (IOException e) {
            System.out.println("[HotelService] 自動補(bǔ)全失敗!prefix=" + prefix);
            e.printStackTrace();
            return null;
        }
    }
}

1.5.5、效果展示

輸入關(guān)鍵詞,即可出現(xiàn)自動補(bǔ)全.

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎

ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能,ElasticSearch,elasticsearch,大數(shù)據(jù),搜索引擎文章來源地址http://www.zghlxwxcb.cn/news/detail-729097.html

到了這里,關(guān)于ElasticSearch - 基于 拼音分詞器 和 IK分詞器 模擬實現(xiàn)“百度”搜索框自動補(bǔ)全功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Elasticsearch 全文搜索引擎 ---- IK分詞器

    Elasticsearch 全文搜索引擎 ---- IK分詞器

    ????????原理:分詞的原理:二叉樹? ? ? ? ? ????????首先講一下為什么要出這個文章,前面我們講過分詞方法: 中文分詞搜索 pscws (感興趣的同學(xué)可以去爬樓看一下),那為什么要講 IK分詞 ?最主要的原因是:pscws分詞 顆粒度 不如IK分詞的顆粒度高,現(xiàn)在的需求

    2024年02月10日
    瀏覽(23)
  • Elasticsearch (ES) 搜索引擎: 文本搜索:分析器/分詞器、同義詞/停用詞、拼音搜索、高亮顯示、拼寫糾錯

    原文鏈接:https://xiets.blog.csdn.net/article/details/132349032 版權(quán)聲明:原創(chuàng)文章禁止轉(zhuǎn)載 專欄目錄:Elasticsearch 專欄(總目錄) 文本搜索主要指的就是全文搜索,全文搜索是搜索引擎的核心功能,與精確匹配的結(jié)構(gòu)化數(shù)據(jù)不同,文本(text)數(shù)據(jù)在構(gòu)建索引和搜索時都需要進(jìn)行額外的處

    2024年02月03日
    瀏覽(44)
  • laravel如何使用scout+elasticsearch搜索,并支持IK分詞

    本擴(kuò)展包支持IK分詞設(shè)置。 在按下文操作前請先閱讀 laravel scout 全文搜索文檔 安裝 您可以通過composer安裝軟件包 wannanbigpig/laravel-scout-elastic: Laravel 會自動注冊驅(qū)動服務(wù)提供者。 Elasticsearch 配置 安裝完成后,您應(yīng)該使用vendor:publish Artisan命令發(fā)布Scout配置文件。該命令將把scou

    2024年02月06日
    瀏覽(56)
  • 搜索引擎elasticsearch :安裝elasticsearch (包含安裝組件kibana、IK分詞器、部署es集群)

    搜索引擎elasticsearch :安裝elasticsearch (包含安裝組件kibana、IK分詞器、部署es集群)

    kibana可以幫助我們方便地編寫DSL語句,所以還要裝kibana 因為我們還需要部署kibana容器,因此需要讓es和kibana容器互聯(lián)。這里先創(chuàng)建一個網(wǎng)絡(luò): 這里我們采用elasticsearch的7.12.1版本的鏡像,這個鏡像體積非常大,接近1G。不建議大家自己pull。 課前資料提供了鏡像的tar包: 大家將

    2024年02月16日
    瀏覽(27)
  • ES(二)| 安裝ES、Kibana、IK分詞器、拼音分詞器(自動補(bǔ)全)

    ES(二)| 安裝ES、Kibana、IK分詞器、拼音分詞器(自動補(bǔ)全)

    上一篇:ES(一)| ES簡介、倒排索引、索引庫操作語法、文檔操作語法、Java使用RestClient進(jìn)行ES操作 安裝包下載: 鏈接:https://pan.baidu.com/s/1Y1O0B8aG7qzRLFFVYo9nHw 提取碼:hdyc 因為我們還需要部署 kibana 容器,因此需要讓 es 和 kibana 容器互聯(lián)。這里先創(chuàng)建一個網(wǎng)絡(luò): 這里我采用

    2023年04月08日
    瀏覽(23)
  • elasticsearch 基于ik分詞器的分詞查詢和模糊匹配

    elasticsearch 基于ik分詞器的分詞查詢和模糊匹配

    前言:elasticsearch 查詢有很多,查詢的條件有固定格式,返回結(jié)果提示不明確,讓ES使用起來有點不方便的感覺,ES查詢方式很多,簡單介紹幾種使用點的,實用的 此處簡單梳理一下最常用的查詢 模糊匹配查詢 類似 mysql 語法中的 like ‘%value%’ 類似于百度的分詞查詢 將

    2024年02月16日
    瀏覽(17)
  • windows環(huán)境基于Elasticsearch8.4.0的IK中文分詞器的安裝、部署、使用

    windows環(huán)境基于Elasticsearch8.4.0的IK中文分詞器的安裝、部署、使用

    目錄 問題現(xiàn)象: 解決方法: 1、下載IK中文分詞器 2、部署 3、使用 前言(選看) ? ? ? 最近在重溫Elasticsearch,看來一下官網(wǎng),都出到8.4.3版本了。想當(dāng)初學(xué)的時候用的還是5.6.8,版本更新了很多意味著有大變動。 ????????? windows環(huán)境基于Elasticsearch8.4.0的IK中文分詞器的安

    2024年02月13日
    瀏覽(33)
  • elasticsearch的拼音分詞器安裝

    elasticsearch的拼音分詞器安裝

    安裝拼音分詞器 第一步:下載 要實現(xiàn)根據(jù)字母做補(bǔ)全,就必須對文檔按照拼音分詞。在 GitHub 上恰好有 elasticsearch 的拼音分詞插件。地址: 倉管的主頁: https://github.com/infinilabs/analysis-pinyin 倉管的版本頁 https://github.com/infinilabs/analysis-pinyin/releases 百度倉庫: 鏈接:百度網(wǎng)盤

    2024年01月22日
    瀏覽(18)
  • elasticsearch 拼音分詞器 & 自動補(bǔ)全。

    elasticsearch 拼音分詞器 & 自動補(bǔ)全。

    2. 自動補(bǔ)全。 當(dāng)用戶在搜索框輸入字符時,我們應(yīng)該提示出與該字符有關(guān)的搜索項,如圖。 這種根據(jù)用戶輸入的字母,提示完整詞條的功能,就是自動補(bǔ)全了。 因為需要根據(jù)拼音字母來推斷,因此要用到拼音分詞功能。 2.1. 拼音分詞器。 要實現(xiàn)根據(jù)字母做補(bǔ)全,就必須對文

    2024年02月06日
    瀏覽(22)
  • 基于 centos7 搭建 laravel+scout+elasticsearch+ik-analyzer 用于中文分詞全文檢索服務(wù)及測試

    基于 centos7 搭建 laravel+scout+elasticsearch+ik-analyzer 用于中文分詞全文檢索服務(wù)及測試

    瀏覽該文章,建議先食用 異常問題 這一節(jié) 軟件/框架 版本 jdk 19.0.2 elasticsearch 8.1.1 ik-analyzer 8.1.1 laravel 7.x-dev elasticsearch/elasticsearch 7.17.1 tamayo/laravel-scout-elastic 8.0.3 下載jdk傳送門 安裝 下載:wget https://download.oracle.com/java/19/latest/jdk-19_linux-x64_bin.rpm 安裝:rpm -ivh jdk-19_linux-x64_bin.

    2023年04月09日
    瀏覽(60)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包