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

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

db. tên bộ sưu tập. tạo Index( { trường. "chữ" } )

Thí dụ

cơ sở dữ liệu. gf

Bộ sưu tập. bài đăng của sinh viên

Các tài liệu. hai tài liệu

Chỉ mục văn bản MongoDB nhiều trường

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"})

Chỉ mục văn bản MongoDB nhiều trường

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()

Chỉ mục văn bản MongoDB nhiều trường

Đầ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()

Chỉ mục văn bản MongoDB nhiều trường

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ỉ mục văn bản MongoDB nhiều trường

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 văn bản MongoDB nhiều trường

chỉ mục ký tự đại diện

Sử 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 MongoDB

Chú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
Tham gia DataFlair trên Telegram.

i. Lập chỉ mục một trường đơn

Tạ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ường

Trong 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ệu

Giả 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 MongoDB

MongoDB đã 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 Tr

Vì 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ắt

Do đó, 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ó.