Vietnam

    Nodejs.vn

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Groups
    • Search

    Search tiếng Việt - mongoose

    Hỏi Đáp
    0
    17
    7144
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Vũ
      Vũ Global Moderator @Hải Nguyễn215 last edited by

      @Hải-Nguyễn215 cái này bạn để trống hoặc mặc định ko điền gì cũng được (vì chưa có mô hình cho tiếng Việt thì phải). Việc định rõ languague giúp việc tìm kiếm hiệu quả và chính xác hơn, do áp dụng 1 vài kỹ thuật NLP (stemming, tokenization, ...)

      Tech-nông
      Email: [email protected]
      Profile: about.me/vunb
      Github: github.com/vunb
      Twitter: twitter.com/nhubaovu

      H 1 Reply Last reply Reply Quote 0
      • H
        Hải Nguyễn215 @Vũ last edited by

        @Vũ em có check thì thấy nó ko nhận key có chứa "Đ" như đặng mình gõ là dang thì nó ko tìm ra.

        Vũ 1 Reply Last reply Reply Quote 1
        • Vũ
          Vũ Global Moderator @Hải Nguyễn215 last edited by

          @Hải-Nguyễn215 Đúng là chữ Đ mình cũng ko tìm thấy, mặc dù chỉ định rõ { $language: 'none', $diacriticSensitive: false, $caseSensitive: false }. Ko biết có gì đặc biệt ở đây nhỉ.

          Tech-nông
          Email: [email protected]
          Profile: about.me/vunb
          Github: github.com/vunb
          Twitter: twitter.com/nhubaovu

          1 Reply Last reply Reply Quote 0
          • Khoa Lê Duy
            Khoa Lê Duy last edited by

            Mongodb hiện tại chưa hỗ trợ search tiếng Việt nhé
            https://docs.mongodb.com/manual/reference/operator/query/text/
            https://docs.mongodb.com/manual/reference/text-search-languages/#text-search-languages
            Nó có tốc độ truy vẫn, thêm bớt, sửa xóa cao nên thôi chấp nhận một số chức năng thiếu hụt so với các loại db khác
            Giải pháp ở đây bạn có thể thêm filed rồi trim hết unicode trên đó đi rồi search trên đó

            Vũ 1 Reply Last reply Reply Quote 1
            • Vũ
              Vũ Global Moderator @Khoa Lê Duy last edited by

              @Khoa-Lê-Duy Ở đây mình nghĩ bộ tokenizer mặc định của mongodb ko nhận diện được chữ Đ, nó mà mở cho cắm plugins vào thì ngon :))

              Tech-nông
              Email: [email protected]
              Profile: about.me/vunb
              Github: github.com/vunb
              Twitter: twitter.com/nhubaovu

              Khoa Lê Duy 1 Reply Last reply Reply Quote 0
              • Khoa Lê Duy
                Khoa Lê Duy @Vũ last edited by

                @Vũ Theo logic thì mình nghĩ là các bảng mã nó cơ bản là giống nhau.
                Cùng cái base đó.(Mượn nhặt của nhau mà)
                Nhưng một số ký tự nó hơi đặc biệt nên nó cũng được đối xử 1 cách đặc biệt
                Nên chữ "Đ" ở đây nó không nhận được
                Mongodb nó đã chỉ rõ là không hỗ trợ tiếng Việt rùi nhưng do mấy bạn không đọc hết doc của nó nên làm bừa(ờ mà mình cũng chưa đọc hết)
                Ngay cả những db gạo cội khác dev cũng thấy khoai khi làm full text search.

                https://github.com/tyxla/remove-accents/blob/master/index.js
                Hy vọng link này sẽ giúp ích chút nhiều cho ai đó đang châm cứu vấn đề này
                Ai làm được mình xin trân thành cảm ơn và công đồng nodejs.vn sẽ hậu tạ 😉

                Vũ 1 Reply Last reply Reply Quote 0
                • S
                  Systesm last edited by

                  Mình cũng đang bị vướng ở vấn đề này, mong có cao nhân giúp đỡ.

                  1 Reply Last reply Reply Quote 0
                  • Vũ
                    Vũ Global Moderator @Khoa Lê Duy last edited by

                    @Khoa-Lê-Duy Nguyên lý chung nhau, chứ bảng mã ko giống nhau. Đối với tiếng Việt thì nó nằm ở rất nhiều dải khác nhau :))

                    • Basic Latin {U+0000..U+007F},
                    • Latin-1 Supplement {U+0080..U+00FF},
                    • Latin Extended-A, -B {U+0100..U+024F},
                    • Latin Extended Additional {U+1E00..U+1EFF},
                    • Combining Diacritical Marks {U+0300.. U+036F}.
                    • Vietnamese đồng currency symbol is ₫ (U+20AB)

                    Tham khảo: http://vietunicode.sourceforge.net/charset/

                    Ban đầu mình có nhắc là ko hỗ trợ tiếng Việt :)) Vì bộ tokenizer, stop words của mình nó khác, tiếng Việt thì ko cần stemming, còn bộ xếp hạng chấm điểm thì phải nghĩ.

                    Phương án hiện tại, có lẽ lưu thêm 1 trường không dấu nữa.

                    Còn lâu dài, chắc cần có Nerds viết plugin cho Mongo 🙂

                    Tech-nông
                    Email: [email protected]
                    Profile: about.me/vunb
                    Github: github.com/vunb
                    Twitter: twitter.com/nhubaovu

                    Khoa Lê Duy 1 Reply Last reply Reply Quote 2
                    • Khoa Lê Duy
                      Khoa Lê Duy @Vũ last edited by Khoa Lê Duy

                      @Vũ Cái này hơi sâu so với nội công của mình rồi mod
                      Nhưng thanks mod về cái link charset
                      Chắc có nhiều thứ nó lòi ra từ cái bảng mã trên
                      Mình có 1 bảng nhưng nó không đủ như này
                      Vấn đề bảng mã cũng hơi lằng nhằng.
                      Chắc full text search được tiếng mẹ đẻ cũng cần cao thủ hơn nữa
                      Chui xuống tầng sâu hơn nữa để điều chế bảng mã

                      Mà giờ cũng thấm nhuần câu của các cụ
                      Phong ba bão táp không bằng ngữ pháp Việt Nam
                      May mà các cụ ngày xưa đổi chữ Nôm thành chữ Quốc Ngữ
                      Không giờ con cháu tha hồ mà chém gió :))

                      1 Reply Last reply Reply Quote 1
                      • Acenter Ha
                        Acenter Ha last edited by

                        Đã có bạn nào giải quyết vấn đề này hoàn chỉnh chưa vậy, mình tạo text index thì nó báo là "language override unsupported: vi" lúc save object.
                        Code tạo text index của mình như sau:
                        Schema.index({ title: 'text', body: 'text' }, { name: 'My text index', weights: { title: 4, body: 3 }});

                        Khoa Lê Duy 1 Reply Last reply Reply Quote 0
                        • Khoa Lê Duy
                          Khoa Lê Duy @Acenter Ha last edited by

                          @Acenter-Ha
                          Bạn qua bên này nhé https://nodejs.vn/topic/1230/thư-viện-fulltextsearch-chắc-chỉ-hỗ-trợ-tiếng-việt
                          Cái này mình không can thiệp bên mongodb
                          Mình dùng nodejs để tạo ra các kết quả giả định

                          Ví dụ: từ "duoc"
                          nó sẽ ra "duoc|đuoc|dùoc|dủoc|dũoc|dúoc|dụoc|dưoc|dừoc|dửoc|...."
                          Ít nhiều ảnh hưởng tới hiệu xuất
                          nhưng hiện tại nó giải quyết được bài toán của mình 😞

                          Hy vọng bạn nào đó có thuật toán để loại bỏ các từ vô nghĩa như 'duoc|đuoc|dùoc|dủoc|dũoc|dúoc|dụoc|dưoc|dừoc|dửoc..."
                          Để nó chỉ ra các từ có nghĩa như
                          được|dược|...

                          1 Reply Last reply Reply Quote 0
                          • H
                            Hải Nguyễn215 last edited by

                            Em đã quay trở lại ^^ không biết đã có phát hiện gì mới về full text search trong mongodb chưa ạ ^^

                            1 Reply Last reply Reply Quote 1
                            • Vũ
                              Vũ Global Moderator last edited by

                              Nhanh vậy, đã 2 năm :))

                              Tech-nông
                              Email: [email protected]
                              Profile: about.me/vunb
                              Github: github.com/vunb
                              Twitter: twitter.com/nhubaovu

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post