sách gpt4 ai đã đi

Elasticsearch triển khai tìm kiếm dựa trên pinyin

In lại Tác giả: Tôi là một chú chim nhỏ Thời gian cập nhật: 2023-01-15 14:31:09 27 4
mua khóa gpt4 Nike

Mục lục
  • 1. Bối cảnh
  • 2. Cài đặt trình phân đoạn từ Pinyin
  • 3. Các chức năng được cung cấp bởi Pinyin word segmenter
  • 4. Chỉ cần kiểm tra trình phân đoạn từ pinyin
    • 4.1 DSL
    • 4.2 Kết quả hoạt động
  • 5. Thành phần của từ phân đoạn trong es
  • 6. Tùy chỉnh trình phân đoạn từ để thực hiện tìm kiếm pinyin và tiếng Trung
    • 1. Tạo bản đồ
    • 2. Chèn dữ liệu
    • 3. Tìm kiếm dữ liệu
  • 7. Tài liệu tham khảo

1. Bối cảnh

Nói chung, một số nhu cầu tìm kiếm đòi hỏi phải tìm kiếm dựa trên bính âm và tiếng Trung. Vậy làm thế nào để triển khai tìm kiếm dựa trên bính âm trong elasticsearch? Điều này có thể thực hiện được thông qua trình phân tích elasticsearch-analysis-pinyin.

2. Cài đặt trình phân đoạn từ Pinyin

                        
                          # Vào thư mục plugin es cd /usr/local/es/elasticsearch-8.4.3/plugins # Tải xuống wget https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v8.4.3/elasticsearch-analysis-pinyin-8.4.3.zip # Tạo thư mục mới mkdir analysis-pinyin # Giải nén mv elasticsearch-analysis-pinyin-8.4.3.zip analysis-pinyin && cd analysis-pinyin && giải nén elasticsearch-analysis-pinyin-8.4.3.zip && rm -rvf elasticsearch-analysis-pinyin-8.4.3.zip cd ../ && chown -R es:es analysis-pinyin # Khởi động es /usr/local/es/elasticsearch-8.4.3/bin/elasticsearch -d

                        
                      

3. Các chức năng được cung cấp bởi Pinyin word segmenter

Bộ phân đoạn từ pinyin cung cấp các chức năng sau. Ý nghĩa của từng tùy chọn có thể được hiểu thông qua các ví dụ trong tài liệu.

4. Chỉ cần kiểm tra trình phân đoạn từ pinyin

4.1 DSL

                        
                          GET _analyze { "text": ["Tôi là người Trung Quốc"], "analyzer": "bính âm" }


                        
                      

"analyzer": "bính âm" Ở đây, bính âm là trình phân đoạn từ bính âm tích hợp sẵn.

4.2 Kết quả hoạt động

Từ hình ảnh, phân đoạn từ bính âm đã được thực hiện, nhưng điều này có thể không đáp ứng được nhu cầu của chúng tôi. Ví dụ, nếu không có tiếng Trung, một bính âm duy nhất (như: wo) là vô dụng và trình phân đoạn từ bính âm cần được tùy chỉnh.

5. Thành phần của từ phân đoạn trong es

Trong elasticsearch, trình phân tích bao gồm ba phần sau:

  1. bộ lọc ký tự: Được sử dụng trong Mã thông báo Văn bản được xử lý trước. Ví dụ: Xóa ký tự, thay thế ký tự, v.v.
  2. Bộ mã hóa: Chia văn bản thành các đoạn độc lập theo các quy tắc nhất định. Nghĩa là chức năng phân đoạn từ được thực hiện.
  3. bộ lọc tokenizer: Sẽ Mã thông báo Các mục đầu ra sẽ được xử lý tiếp. Ví dụ: Xử lý từ đồng nghĩa, chuyển đổi trường hợp, loại bỏ từ dừng, xử lý bính âm, v.v.

Luồng xử lý

6. Tùy chỉnh trình phân đoạn từ để thực hiện tìm kiếm pinyin và tiếng Trung

Yêu cầu: Tùy chỉnh trình phân đoạn từ có thể thực hiện cả tìm kiếm bính âm và tìm kiếm tiếng Trung.

1. Tạo bản đồ

                        
                          Đặt /test_pinyin {"Cài đặt": {// Cài đặt cho giai đoạn phân tích "Phân tích": {// Cài đặt phân tích "Máy phân tích": {// Phân tích tùy chỉnh tokenizer âm không được đáp ứng, chúng tôi đã tùy chỉnh một bộ lọc dựa trên pinyin //, được gọi là PY, trong đó một số cài đặt được sửa đổi. iding: Andy Lau> [liudehua] "keep_joined_full_pinyin": true, // Giữ mã thông báo gốc (tức là tiếng Trung) "keep_original": true "limit_first_letter_length": 16, // Khi tùy chọn này được bật, các ký tự trùng lặp sẽ bị xóa để lưu chỉ mục, ví dụ: de's > de, mặc định: false, lưu ý: các truy vấn liên quan đến vị trí có thể bị ảnh hưởng "remove_duplicated_term": true, // Nếu các chữ cái không phải tiếng Trung là bính âm, chúng sẽ được tách thành các thuật ngữ bính âm riêng biệt, mặc định: true, chẳng hạn như: liudehuaalibaba13zhuanghan-> liu, de, hua, a, li, ba, ba, 13, zhuang, han, lưu ý: trước tiên phải bật keep_none_chinese và keep_none_chinese_together "none_chinese_pinyin_tokenize": false } } } }, // Định nghĩa ánh xạ "mappings": { "properties": { "name": { "type": "text", // Bộ ngắt từ được sử dụng khi tạo chỉ mục đảo ngược "analyzer": "custom_analyzer", // Từ segmenter được sử dụng khi tìm kiếm. Custom_analyzer không được sử dụng khi tìm kiếm để tránh lỗi tìm kiếm do các từ có cùng bính âm nhưng nghĩa tiếng Trung khác nhau. Ví dụ: công nghệ và máy bay chở khách có cùng bính âm, nhưng nghĩa khác nhau. "search_analyzer": "ik_smart" } } } }

                        
                      

Lưu ý: Bạn có thể thấy rằng trình phân tích cú pháp được sử dụng cho trường tên của chúng ta là custom_analyzer, được chúng ta định nghĩa ở bước trước. Nhưng khi tìm kiếm, ik_smart được sử dụng. Tại sao điều này lại xảy ra? Giả sử chúng ta có hai văn bản sau: sức mạnh công nghệ và đây là một chiếc máy bay chở khách, vậy thì phiên âm của công nghệ và máy bay chở khách có giống nhau không? Lúc này, nếu từ segmenter dùng trong tìm kiếm cũng là custom_analyzer thì khi tìm kiếm công nghệ, máy bay chở khách cũng sẽ được tìm kiếm, điều này là sai. Do đó, khi tìm kiếm, các từ tiếng Trung nên được tìm kiếm bằng tiếng Trung và các từ Bính âm nên được tìm kiếm bằng Bính âm.

                        
                          { "tên": { "loại": "văn bản", "phân tích": "phân tích_tùy_chỉnh", "phân tích_tìm_kiếm": "ik_smart" } }

                        
                      

Khi giá trị của analyzer và search_analyzer đều là custom_analyzer, việc tìm kiếm cũng sẽ được thực hiện theo bính âm, điều này có thể không phải là điều chúng ta mong muốn.

2. Chèn dữ liệu

                        
                          PUT /test_pinyin/_bulk {"index":{"_id":1}} {"name": "Sức mạnh công nghệ"} {"index":{"_id":2}} {"name": "Đây là máy bay chở khách"} {"index":{"_id":3}}

                        
                      

3. Tìm kiếm dữ liệu

Tìm kiếm dữ liệu

7. Tài liệu tham khảo

1. https://github.com/medcl/elasticsearch-analysis-pinyin/tree/master .

Cuối cùng, bài viết này về việc thực hiện tìm kiếm theo bính âm của elasticsearch kết thúc tại đây. Nếu bạn muốn biết thêm về việc thực hiện tìm kiếm theo bính âm của elasticsearch, vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

27 4 0
Tôi là một chú chim nhỏ
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com