Chỉ mục văn bản MongoDB nhiều trường
MongoDB là một cơ sở dữ liệu NoSQL dựa trên tài liệu. Vì dữ liệu được lưu trữ ở định dạng của tài liệu nên nó có thể chứa một lượng dữ liệu khổng lồ và vì đây là loại cơ sở dữ liệu NoSQL nên không cần thiết phải có các mối quan hệ toàn vẹn tham chiếu. Vì vậy, tìm kiếm là một tiêu chí quan trọng ở đây và MongoDB cung cấp các chỉ mục Văn bản để hỗ trợ các truy vấn tìm kiếm văn bản, đặc biệt là trên nội dung chuỗi. Chỉ mục văn bản phải là một chuỗi hoặc một mảng các phần tử chuỗi Show
Làm cách nào để tạo mục lục văn bản?Trong MongoDB, chúng ta có thể tạo các chỉ mục văn bản bằng cách sử dụng db. tên bộ sưu tập. phương thức tạo Index(). Vì vậy, để lập chỉ mục một trường chứa chuỗi hoặc một mảng các phần tử chuỗi, hãy chuyển một tài liệu trong phương thức createIndex() chứa trường và chuỗi ký tự (i. e. , "chữ"). Sử dụng phương pháp này, bạn được phép lập chỉ mục nhiều trường cho mục lục văn bản. Ngoài ra, một chỉ mục phức hợp có thể chứa khóa chỉ mục văn bản kết hợp với khóa chỉ mục tăng dần và giảm dần. Và nếu bạn muốn bỏ chỉ mục văn bản, chỉ cần sử dụng tên chỉ mục cú pháp
Thí dụ
Bây giờ, chúng ta hãy tạo một chỉ mục văn bản trên trường “title” của bộ sưu tập “studentsposts” để tìm kiếm bên trong bộ sưu tập db.studentsposts.createIndex({title: "text"}) Bây giờ chúng ta sẽ xem cách tìm kiếm bằng Text Index db.studentsposts.find({$text:{$search: "mongodb"}}).pretty() Đầu ra là tự giải thích ở trên vì chúng tôi đã tạo chỉ mục trên trường “tiêu đề” và chúng tôi đã cố gắng tìm kiếm văn bản “mongodb”. Nó hiện diện trong cả hai tài liệu trong trường "tiêu đề". Do đó, kết quả là 2 tài liệu ở đây thả chỉ mụcĐôi khi cũng có thể cần phải xóa các chỉ mục văn bản vì nó được tạo sai hoặc cần sửa đổi theo một cách khác hoặc hoàn toàn muốn xóa nó. Vì vậy, sử dụng db. thu thập. dropIndex() chúng ta có thể xóa chỉ mục văn bản. Phương thức này xóa chỉ mục đã chỉ định khỏi bộ sưu tập đã cho cú pháp db.collection.dropIndex("TextIndex") Thí dụ Đầu tiên, chúng ta tìm chỉ mục của trường db.studentsposts.getIndexes() Bây giờ chúng tôi xóa chỉ mục văn bản bằng phương thức dropIndex() db.studentsposts.dropIndex("title_text") Chỉ định trọng lượngĐối với chỉ mục văn bản, trọng số của trường được lập chỉ mục là tầm quan trọng của trường. Trong MongoDB, đối với mỗi trường chỉ mục trong tài liệu, MongoDB tính tổng kết quả bằng cách nhân số lượng kết quả khớp với trọng số. Bây giờ sử dụng tổng này, MongoDB tính điểm cho tài liệu. Trọng số mặc định của trường chỉ mục là 1 và bạn có thể điều chỉnh trọng số của chỉ mục bằng phương thức createIndex() Thí dụ db.studentsposts.createIndex({title:"text", tags:"text"}, {weights:{title:10, tags:5}, name:"TextIndex"}) Ở đây, trọng số của trường tiêu đề và thẻ là 10 và 5 chỉ mục ký tự đại diệnSử dụng trình xác định ký tự đại diện ($**), bạn được phép tạo nhiều trường chỉ mục văn bản. Do chỉ mục văn bản ký tự đại diện MongoDB lập chỉ mục cho từng trường chứa dữ liệu chuỗi trong tất cả các tài liệu có trong bộ sưu tập đã cho. Chỉ mục văn bản ký tự đại diện hữu ích cho dữ liệu phi cấu trúc khi chúng tôi không biết trường nào chứa dữ liệu chuỗi hoặc cho truy vấn đặc biệt. Nó cho phép tìm kiếm văn bản trên tất cả các trường chứa dữ liệu chuỗi. Chỉ mục văn bản hoang dã có thể là một phần của chỉ mục ghép Trong hướng dẫn trước của chúng tôi, chúng tôi đã tìm hiểu về Thực thi MongoDB trong Chương trình Java. Bây giờ, chúng ta sẽ xem xét Tìm kiếm văn bản MongoDB Trong bài viết này, chúng ta sẽ nghiên cứu cách lập chỉ mục tìm kiếm văn bản mongoDB một phần, nhiều trường và toàn bộ tài liệu. Cùng với điều này, chúng ta sẽ tìm hiểu các ngôn ngữ khác nhau được hỗ trợ bởi tìm kiếm văn bản Tìm kiếm văn bản MongoDBChúng tôi có thể thực hiện tìm kiếm văn bản MongoDB của nội dung chuỗi với sự trợ giúp của các thao tác truy vấn. Toán tử $text được sử dụng để thực hiện loại tìm kiếm văn bản này trong MongoDB Để hiểu chủ đề này một cách tốt hơn, chúng tôi sẽ sử dụng một ví dụ về bộ sưu tập có tên là ví dụ với cấu trúc sau { "subject":"Joe", "content":"best friend", "likes": 60, "year":2015, "language":"english" } Hãy thêm một số tài liệu mẫu trong bộ sưu tập db.examples.insert({"subject":"Joe", "content":"best friend", "likes": 60, "year":2015, "language":"english"}) db.examples.insert({"subject":"Dogs", "content":"Cats", "likes": 30, "year":2015, "language":"english"}) db.examples.insert({"subject":"Cats", "content":"Rats", "likes": 55, "year":2014, "language":"english"}) db.examples.insert({"subject":"Rats", "content":"Joe", "likes": 75, "year":2014, "language":"english"}) Luôn cập nhật các xu hướng công nghệ mới nhất i. Lập chỉ mục một trường đơnTại đây, chúng tôi sẽ tạo một chỉ mục văn bản trên trường chủ đề của tài liệu bằng cách sử dụng truy vấn được cung cấp bên dưới ________số 8 Bây giờ, nếu bạn muốn kiểm tra chỉ mục văn bản mới tạo này trên trường chủ đề, chúng ta sẽ phải tìm tài liệu bằng toán tử $text. Chúng tôi sẽ tìm kiếm tất cả các tài liệu có từ khóa dog trong lĩnh vực chủ đề của họ db.examples.find({$text: {$search: "dogs"}}, {score: {$meta: "toextScore"}}).sort({score:{$meta:"textScore"}}) Ở đây, chúng tôi đang sử dụng {$meta. “textScore” } để nhận một số thống kê về mức độ phù hợp của tài liệu kết quả của chúng tôi. Sau đó, chúng tôi sẽ sắp xếp tất cả các tài liệu theo textScore của chúng bằng cách sử dụng lệnh sắp xếp. TextScore càng cao, trận đấu càng phù hợp Đầu ra cho đoạn mã sau sẽ như thế này { "_Tôi". ObjectId(“55f4a5d9b592880356441e94”), “chủ đề”. “Chó”, “nội dung”. “Mèo”, “thích”. 30, “năm”. 2015, “ngôn ngữ”. “tiếng anh”, “điểm số”. 0. 66 } Ở đây tài liệu có điểm là 0. 66 vì từ chó chỉ xuất hiện một lần ii. Lập chỉ mục nhiều trườngTrong các tình huống thời gian thực của chúng tôi, chúng tôi sẽ phải sử dụng tìm kiếm văn bản MongoDB trên nhiều trường của tài liệu. Trong ví dụ của chúng tôi để hiểu điều này, chúng tôi sẽ kích hoạt lập chỉ mục văn bản phức hợp trên các trường chủ đề và nội dung Nhưng trước khi làm điều này, chúng ta sẽ phải loại bỏ chỉ mục văn bản hiện có vì nó chỉ có thể lấy một chỉ mục văn bản cho mỗi bộ sưu tập db.studentsposts.find({$text:{$search: "mongodb"}}).pretty()0 Sau khi viết truy vấn này, bây giờ hãy viết một truy vấn khác để tìm ra tất cả các tài liệu với từ khóa cat db.studentsposts.find({$text:{$search: "mongodb"}}).pretty()1 Truy vấn này sẽ cung cấp cho chúng tôi đầu ra sau { "_Tôi". ObjectId(“55f4af22b592880356441ea4”), “chủ đề”. “Chó”, “nội dung”. “Mèo”, “thích”. 30, “năm”. 2015, “ngôn ngữ”. “tiếng anh”, “điểm số”. 0. 6666 } { "_Tôi". ObjectId(“55f4af22b592880356441ea5”), “chủ đề”. “Mèo”, “nội dung”. “Chuột”, “thích”. 55, “năm”. 2014, “ngôn ngữ”. “tiếng anh”, “điểm số”. 0. 6666 } iii. Lập chỉ mục toàn bộ tài liệuGiả sử, nếu chúng ta muốn lập chỉ mục cho tất cả các thư được lưu trữ trong MongoDB. Đối với điều đó, chúng tôi sẽ phải xem xét người gửi, người nhận, chủ đề và nội dung bằng cách sử dụng ký tự xác định ký tự đại diện $** Bây giờ chúng ta sẽ xem ví dụ để hiểu rõ hơn db.studentsposts.find({$text:{$search: "mongodb"}}).pretty()2 Truy vấn này sẽ thiết lập các chỉ mục văn bản trên bất kỳ trường chuỗi nào trong tài liệu của chúng tôi. Đối với điều này, hãy chèn một tài liệu mới có vị trí trường mới trong đó db.studentsposts.find({$text:{$search: "mongodb"}}).pretty()3 Bây giờ nếu chúng ta thử tìm kiếm với từ khóa Thụy Sĩ thì nó sẽ hiện ra tài liệu hiện tại mà chúng ta đã chèn vào db.studentsposts.find({$text:{$search: "mongodb"}}).pretty()4 iv. Các ngôn ngữ được hỗ trợ bởi Tìm kiếm văn bản của MongoDBMongoDB đã giới thiệu một phiên bản mới, phiên bản 2 cho các tính năng tìm kiếm văn bản. Phiên bản 1 chỉ hỗ trợ dạng dài của mỗi tên ngôn ngữ. Nhưng trong phiên bản, chúng tôi có thể sử dụng mã ngôn ngữ gồm hai chữ cái được xác định trong ISO 639-1 Ngôn ngữ nametwo-letter codedanish danglish endut nlfinnish fifrench frgerman dehungarian huitalian itnorwegian nbportuguese ptromanian rorussian ruspanish esswedish svturkish tr tr tr tr tr tr tr tr tr tr TrVì vậy, đây là tất cả về Hướng dẫn tìm kiếm văn bản MongoDB. Hy vọng, bạn thích lời giải thích của chúng tôi Bản tóm tắtDo đó, chúng tôi đã nghiên cứu về tìm kiếm văn bản trong MongoDB với các tình huống tìm kiếm khác nhau từ một ví dụ Ngoài ra, chúng tôi đã thảo luận về tất cả các ngôn ngữ được MongoDB Text Search hỗ trợ với mã ISO 639-1. Hơn nữa, nếu bạn có bất kỳ câu hỏi nào, vui lòng chia sẻ với chúng tôi. Chắc chắn, chúng tôi sẽ lấy lại cho bạn Làm cách nào để tạo nhiều chỉ mục văn bản trong MongoDB?Trong MongoDB, chúng ta có thể tạo chỉ mục văn bản bằng cách sử dụng db. tên bộ sưu tập. phương thức tạo Index() . Vì vậy, để lập chỉ mục một trường chứa chuỗi hoặc một mảng các phần tử chuỗi, hãy chuyển một tài liệu trong phương thức createIndex() chứa trường và chuỗi ký tự (i. e. , "chữ").
Có thể lập chỉ mục văn bản với MongoDB không?MongoDB cung cấp chỉ mục văn bản để hỗ trợ các truy vấn tìm kiếm văn bản trên nội dung chuỗi . Chỉ mục văn bản có thể bao gồm bất kỳ trường nào có giá trị là một chuỗi hoặc một mảng các phần tử chuỗi. Một bộ sưu tập chỉ có thể có một chỉ mục tìm kiếm văn bản, nhưng chỉ mục đó có thể bao gồm nhiều trường.
MongoDB có thể sử dụng một phần của chỉ mục ghép không?MongoDB có thể sử dụng giao điểm của các chỉ mục để thực hiện các truy vấn. Đối với các truy vấn chỉ định các điều kiện truy vấn phức hợp, nếu một chỉ mục có thể đáp ứng một phần của điều kiện truy vấn và một chỉ mục khác có thể đáp ứng một phần khác của điều kiện truy vấn, thì MongoDB có thể sử dụng giao điểm của hai chỉ mục để đáp ứng truy vấn
Lập chỉ mục hợp chất là gì?Chỉ mục hợp chất là chỉ mục không gian được tạo từ một số thuộc tính hoặc thuộc tính lồng nhau (a. k. a. đường dẫn) . Mỗi thuộc tính của một chỉ số phức hợp được gọi là một phân khúc và mỗi phân khúc được mô tả bằng đường dẫn của nó. |