Tìm kiếm toàn văn MongoDB tiếng Việt

Dịch vụ IBM Cloud® Databases for MongoDB cho phép các nhà phát triển tận dụng các tính năng mới nhất của MongoDB. tài liệu JSON phong phú, ngôn ngữ truy vấn mạnh mẽ, giao dịch nhiều tài liệu và API xác thực. Dịch vụ này cũng tự động hóa các tác vụ quản trị cơ sở dữ liệu phổ biến như tính sẵn sàng cao, sao lưu, mã hóa và lập kế hoạch cơ sở hạ tầng

Show

Đọc thêm

Tìm kiếm toàn văn MongoDB tiếng Việt

Trường hợp sử dụng

Ứng dụng webXem các ứng dụng Web

Tìm kiếm toàn văn MongoDB tiếng Việt

Ứng dụng web

Mô hình dữ liệu tài liệu của MongoDB giúp dễ dàng lưu trữ và kết hợp dữ liệu có cấu trúc đa dạng, với khả năng truy cập dữ liệu linh hoạt và chức năng lập chỉ mục phong phú. Việc cung cấp cơ sở dữ liệu được quản lý hoàn toàn từ IBM cho phép bạn tập trung vào việc xây dựng các ứng dụng có thể mở rộng với các đổi mới công nghệ nguồn mở. Cơ sở dữ liệu đám mây của IBM dành cho MongoDB thúc đẩy sự phát triển của các ứng dụng di động và web.  

Ứng dụng di độngXem các ứng dụng dành cho thiết bị di động

Tìm kiếm toàn văn MongoDB tiếng Việt

Ứng dụng di động

API MongoDB và REST thúc đẩy các ứng dụng di động và web thời gian thực. Xây dựng các ứng dụng sáng tạo bằng MongoDB với Angular, React và Node. JS mở rộng quy mô theo nhu cầu của khách hàng. Với các tính năng như lược đồ linh hoạt, ngôn ngữ truy vấn biểu cảm, phân tích nhanh và hơn thế nữa, MongoDB là một phần quan trọng của các mô hình ứng dụng ngày nay đang phát triển nhanh chóng

Đặc trưng

Quản lý lượng dữ liệu khổng lồ với cơ sở dữ liệu MongoDB linh hoạt, có thể mở rộng và khả dụng cao.  

Xem tất cả các tính năng

Được quản lý hoàn toàn

MongoDB với tư cách là một dịch vụ có nghĩa là IBM đảm nhiệm nhiều nhiệm vụ quản lý cơ sở dữ liệu như sao lưu, tính sẵn sàng cao, ghi nhật ký, giám sát, cung cấp phần cứng cũng như vá phần mềm và bảo mật

Tính khả dụng cao

Triển khai MongoDB được xây dựng để có tính sẵn sàng cao, sử dụng ba vùng khả dụng riêng biệt trong một vùng cho 99. 99% SLA. Tất cả các bản sao lưu sẽ tự động chuyển đến Bộ lưu trữ đối tượng đám mây của IBM và có thể được khôi phục vào các vùng Đám mây khác của IBM

Bảo vệ

IBM Cloud cung cấp mã hóa dữ liệu khi chuyển động thông qua TLS và mã hóa khi lưu trữ dữ liệu trên đĩa và các bản sao lưu. Mỗi cơ sở dữ liệu cung cấp khả năng tích hợp với IBM® Key Protect hoặc IBM Cloud Hyper Protect Crypto Services

Tuân thủ

Cả hai phiên bản Tiêu chuẩn và Doanh nghiệp của Cơ sở dữ liệu đám mây IBM dành cho MongoDB đều sẵn sàng cho HIPAA và tuân thủ PCI-DSS, SOC 2 Type 2, ISO 27001, ISO 27017 và ISO 27018

MongoDB, một trong những cơ sở dữ liệu NoSQL hàng đầu, nổi tiếng với hiệu suất nhanh, lược đồ linh hoạt, khả năng mở rộng và khả năng lập chỉ mục tuyệt vời. Cốt lõi của hiệu suất nhanh này nằm ở các chỉ mục MongoDB, hỗ trợ thực thi hiệu quả các truy vấn bằng cách tránh quét toàn bộ bộ sưu tập và do đó hạn chế số lượng tài liệu tìm kiếm MongoDB.  

Bắt đầu từ phiên bản 2. 4, MongoDB đã bắt đầu với một tính năng thử nghiệm hỗ trợ Tìm kiếm toàn văn bằng cách sử dụng Chỉ mục văn bản. Tính năng này hiện đã trở thành một phần không thể thiếu của sản phẩm (và không còn là tính năng thử nghiệm nữa). Trong bài viết này, chúng ta sẽ khám phá các chức năng tìm kiếm toàn văn của MongoDB ngay từ các nguyên tắc cơ bản

Nếu bạn chưa quen với MongoDB, tôi khuyên bạn nên đọc các bài viết sau trên Envato Tuts+ để giúp bạn hiểu các khái niệm cơ bản về MongoDB

  • Bắt đầu với MongoDB - Phần 1
  • Ánh xạ cơ sở dữ liệu quan hệ và SQL sang MongoDB

Những thứ cơ bản

Trước khi chúng tôi đi vào bất kỳ chi tiết nào, chúng ta hãy xem xét một số thông tin cơ bản. Tìm kiếm toàn văn đề cập đến kỹ thuật tìm kiếm cơ sở dữ liệu toàn văn theo các tiêu chí tìm kiếm do người dùng chỉ định. Nó tương tự như cách chúng tôi tìm kiếm bất kỳ nội dung nào trên Google (hoặc trên thực tế là bất kỳ ứng dụng tìm kiếm nào khác) bằng cách nhập một số từ khóa/cụm từ chuỗi nhất định và nhận lại các kết quả có liên quan được sắp xếp theo thứ hạng của chúng

Dưới đây là một số tình huống khác mà chúng ta sẽ thấy một tìm kiếm toàn văn đang diễn ra

  • Cân nhắc tìm kiếm chủ đề yêu thích của bạn trên Wiki. Khi bạn nhập nội dung tìm kiếm trên Wiki, công cụ tìm kiếm sẽ trả về kết quả tất cả các bài viết liên quan đến từ khóa/cụm từ bạn tìm kiếm (ngay cả khi những từ khóa đó được sử dụng sâu bên trong bài viết). Các kết quả tìm kiếm này được sắp xếp theo mức độ liên quan dựa trên điểm số phù hợp của chúng.  
  • Một ví dụ khác, hãy xem xét một trang mạng xã hội nơi người dùng có thể thực hiện tìm kiếm để tìm tất cả các bài đăng có chứa từ khóa
    {
    
    24 trong đó; .  

Trước khi chúng ta tiếp tục, có một số thuật ngữ chung liên quan đến tìm kiếm toàn văn mà bạn nên biết. Các thuật ngữ này có thể áp dụng cho bất kỳ triển khai tìm kiếm toàn văn nào (và không dành riêng cho MongoDB)

Ngưng từ

Từ dừng là những từ không liên quan cần được lọc ra khỏi văn bản. Ví dụ. a, an, the, is, at, which, etc

Nhét đầy

Từ gốc là quá trình rút gọn các từ về gốc của chúng. Ví dụ. những từ như đứng, đứng, đứng, v.v. có một chân đế chung

chấm điểm

Xếp hạng tương đối để đo lường kết quả tìm kiếm nào phù hợp nhất.   

Các lựa chọn thay thế cho Tìm kiếm toàn văn bản trong MongoDB

Trước khi MongoDB đưa ra khái niệm về chỉ mục văn bản, chúng tôi sẽ lập mô hình dữ liệu của mình để hỗ trợ tìm kiếm từ khóa hoặc sử dụng để triển khai các chức năng tìm kiếm đó. Tuy nhiên, sử dụng bất kỳ phương pháp nào trong số này đều có những hạn chế riêng.

  • Thứ nhất, không có phương pháp nào trong số này hỗ trợ các chức năng như bắt đầu từ, dừng từ, xếp hạng, v.v.   
  • Sử dụng tìm kiếm từ khóa sẽ yêu cầu tạo các chỉ mục đa khóa, không đủ so với toàn văn
  • Sử dụng các biểu thức chính quy không hiệu quả từ quan điểm hiệu suất, vì các biểu thức này không sử dụng hiệu quả các chỉ mục
  • Ngoài ra, không có kỹ thuật nào trong số này có thể được sử dụng để thực hiện bất kỳ tìm kiếm cụm từ nào (như tìm kiếm 'phim phát hành năm 2015') hoặc tìm kiếm có trọng số.   

Ngoài các cách tiếp cận này, đối với các ứng dụng tập trung vào tìm kiếm nâng cao và phức tạp hơn, còn có các giải pháp thay thế như Tìm kiếm đàn hồi hoặc SOLR. Nhưng việc sử dụng bất kỳ giải pháp nào trong số này sẽ làm tăng độ phức tạp về kiến ​​trúc của ứng dụng, vì MongoDB hiện phải giao tiếp với một cơ sở dữ liệu bên ngoài bổ sung.  

Lưu ý rằng tìm kiếm toàn văn của MongoDB không được đề xuất như một sự thay thế hoàn toàn cho cơ sở dữ liệu công cụ tìm kiếm như Đàn hồi, SOLR, v.v. Tuy nhiên, nó có thể được sử dụng hiệu quả cho phần lớn các ứng dụng được xây dựng bằng MongoDB ngày nay

Giới thiệu Tìm kiếm văn bản MongoDB

Sử dụng tìm kiếm toàn văn MongoDB, bạn có thể xác định chỉ mục văn bản trên bất kỳ trường nào trong tài liệu có giá trị là một chuỗi hoặc một mảng các chuỗi. Khi chúng tôi tạo một chỉ mục văn bản trên một trường, MongoDB mã hóa và tạo nội dung văn bản của trường được lập chỉ mục và thiết lập các chỉ mục tương ứng.  

Để hiểu rõ hơn, bây giờ chúng ta hãy đi sâu vào một số điều thực tế. Tôi muốn bạn làm theo hướng dẫn với tôi bằng cách thử các ví dụ trong mongo shell. Trước tiên, chúng tôi sẽ tạo một số dữ liệu mẫu mà chúng tôi sẽ sử dụng trong suốt bài viết, sau đó chúng tôi sẽ chuyển sang thảo luận về các khái niệm chính

Với mục đích của bài viết này, hãy xem xét một bộ sưu tập

{
26 lưu trữ các tài liệu có cấu trúc sau.  

1
________0____5_______
    "subject":"Joe owns a dog", 
3
    "content":"Dogs are man's best friend", 
4
    "likes": 60, 
5
    "year":2015, 
{
0
{
1
{
2_______0_______3

Hãy để chúng tôi chèn một số tài liệu mẫu bằng cách sử dụng lệnh 

{
27 để tạo dữ liệu thử nghiệm của chúng tôi

1
{
5_______5_______
3
{
8_______9_______
5
5_______1
{
0
{
2
2
4

Tạo chỉ mục văn bản

Chỉ mục văn bản được tạo khá giống với cách chúng ta tạo chỉ mục thông thường, ngoại trừ việc nó chỉ định từ khóa 

{
28 thay vì chỉ định thứ tự tăng dần/giảm dần

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

Tạo chỉ mục văn bản trên trường 

{
29 của tài liệu bằng truy vấn sau

1
2
6

Để kiểm tra chỉ mục văn bản mới được tạo này trên trường 

{
29, chúng tôi sẽ tìm kiếm tài liệu bằng cách sử dụng toán tử
{
31. Chúng tôi sẽ tìm kiếm tất cả các tài liệu có từ khóa
{
32 trong trường
{
29 của chúng.  

Vì chúng tôi đang chạy tìm kiếm văn bản, nên chúng tôi cũng quan tâm đến việc nhận một số thống kê về mức độ phù hợp của các tài liệu kết quả. Vì mục đích này, chúng tôi sẽ sử dụng biểu thức

{
34, biểu thức này cung cấp thông tin về quá trình xử lý của toán tử 
{
31. Chúng tôi cũng sẽ sắp xếp các tài liệu theo
{
36 của chúng bằng cách sử dụng lệnh 
{
37.
{
36 cao hơn biểu thị kết quả phù hợp hơn.  

1
2
8

Truy vấn trên trả về các tài liệu sau có chứa từ khóa

{
32 trong trường
{
29 của chúng.  

1
    "subject":"Joe owns a dog", 
0_______5_______
3
    "subject":"Joe owns a dog", 
3

Như bạn có thể thấy, tài liệu đầu tiên có điểm 1 (vì từ khóa

{
41 xuất hiện hai lần trong chủ đề của nó) trái ngược với tài liệu thứ hai có điểm 0. 66. Truy vấn cũng đã sắp xếp các tài liệu được trả về theo thứ tự điểm số giảm dần

Một câu hỏi có thể nảy sinh trong đầu bạn là nếu chúng ta đang tìm kiếm từ khóa

{
32, tại sao công cụ tìm kiếm lại xem xét từ khóa
{
41 (không có 's')?

Lập chỉ mục nhiều trường (Lập chỉ mục tổng hợp)

Thường xuyên hơn không, bạn sẽ sử dụng tìm kiếm văn bản trên nhiều trường của tài liệu. Trong ví dụ của chúng tôi, chúng tôi sẽ kích hoạt tính năng lập chỉ mục văn bản phức hợp trên các trường 

{
29 và
{
47. Hãy tiếp tục và thực hiện lệnh sau trong vỏ mongo.  

1
    "subject":"Joe owns a dog", 
5

Cái này có hiệu quả không? . Tạo một chỉ mục văn bản thứ hai sẽ cho bạn một thông báo lỗi nói rằng đã tồn tại một chỉ mục tìm kiếm toàn văn bản. Tại sao nó như vậy? . Do đó, nếu bạn muốn tạo một chỉ mục văn bản khác, bạn sẽ phải bỏ chỉ mục hiện có và tạo lại chỉ mục mới.  

1
    "subject":"Joe owns a dog", 
7_______5_______6_______5

Sau khi thực hiện các truy vấn tạo chỉ mục trên, hãy thử tìm kiếm tất cả các tài liệu với từ khóa

{
48

1
3
1

Truy vấn trên sẽ xuất ra các tài liệu sau

1
3
3_______5_______7_______
3
6

Bạn có thể thấy rằng điểm của tài liệu đầu tiên, chứa từ khóa

{
48 trong cả hai trường 
{
29 và
{
47, cao hơn.  

Lập chỉ mục toàn bộ tài liệu (Lập chỉ mục ký tự đại diện)

Trong ví dụ trước, chúng tôi đặt một chỉ mục kết hợp trên các trường 

{
29 và
{
47. Nhưng có thể có những tình huống mà bạn muốn bất kỳ nội dung văn bản nào trong tài liệu của mình có thể tìm kiếm được.  

Ví dụ: xem xét việc lưu trữ email trong tài liệu MongoDB. Trong trường hợp email, tất cả các trường, bao gồm Người gửi, Người nhận, Chủ đề và Nội dung, cần có thể tìm kiếm được. Trong những tình huống như vậy, bạn có thể lập chỉ mục tất cả các trường chuỗi trong tài liệu của mình bằng cách sử dụng công cụ xác định ký tự đại diện 

{
54

Truy vấn sẽ giống như thế này (đảm bảo rằng bạn đang xóa chỉ mục hiện có trước khi tạo chỉ mục mới)

1
3
8

Truy vấn này sẽ tự động 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. Để kiểm tra điều này, hãy chèn một tài liệu mới có trường mới

{
55 vào đó

1
    "content":"Dogs are man's best friend", 
0

Bây giờ nếu bạn thử tìm kiếm văn bản với từ khóa

{
56 (truy vấn bên dưới), nó sẽ trả về tài liệu mà chúng ta vừa chèn

1
    "content":"Dogs are man's best friend", 
2

Một vài điều tôi muốn tập trung vào đây

  • Lưu ý rằng chúng tôi đã không xác định rõ ràng một chỉ mục trên trường
    {
    
    55 sau khi chúng tôi chèn một tài liệu mới. Điều này là do chúng ta đã xác định chỉ mục văn bản trên toàn bộ tài liệu bằng cách sử dụng toán tử
    {
    
    54
  • Đôi khi, chỉ mục ký tự đại diện có thể bị chậm, đặc biệt là trong các trường hợp dữ liệu của bạn rất lớn. Vì lý do này, hãy lập kế hoạch lập chỉ mục tài liệu của bạn (còn gọi là chỉ mục ký tự đại diện) một cách khôn ngoan, vì nó có thể gây ra sự cố về hiệu suất

Tìm kiếm nâng cao

Tìm kiếm cụm từ

Bạn có thể tìm kiếm các cụm từ như “những chú chim thông minh thích nấu ăn” bằng cách sử dụng chỉ mục văn bản. Theo mặc định, tìm kiếm cụm từ thực hiện tìm kiếm HOẶC trên tất cả các từ khóa đã chỉ định, tôi. e. nó sẽ tìm kiếm các tài liệu có chứa các từ khóa

{
59,
{
60,
{
61 hoặc
{
62

1
    "content":"Dogs are man's best friend", 
4

Truy vấn này sẽ xuất ra các tài liệu sau

1
    "content":"Dogs are man's best friend", 
6_______5_______
3
    "content":"Dogs are man's best friend", 
9

Trong trường hợp bạn muốn thực hiện tìm kiếm cụm từ chính xác (logic AND), bạn có thể thực hiện bằng cách chỉ định dấu ngoặc kép trong văn bản tìm kiếm.  

1
4
1

Truy vấn này sẽ dẫn đến tài liệu sau, chứa cụm từ “nấu thức ăn” cùng nhau

1
4
3

Tìm kiếm phủ định

Tiền tố một từ khóa tìm kiếm với

{
63 (dấu trừ) loại trừ tất cả các tài liệu có chứa thuật ngữ phủ định. Ví dụ: hãy thử tìm kiếm bất kỳ tài liệu nào chứa từ khóa
{
64 nhưng không chứa
{
65 bằng cách sử dụng truy vấn sau

1
4
5

Nhìn Hậu Trường

Một chức năng quan trọng mà tôi chưa tiết lộ cho đến bây giờ là cách bạn nhìn vào hậu trường và xem các từ khóa tìm kiếm của bạn đang được bắt đầu như thế nào, ngừng áp dụng từ ngữ, phủ định, v.v.

{
66 để giải cứu. Bạn có thể chạy truy vấn giải thích bằng cách chuyển
{
67 làm tham số, điều này sẽ cung cấp cho bạn số liệu thống kê chi tiết về việc thực hiện truy vấn.  

1
4
7

Nếu bạn nhìn vào đối tượng

{
68 được trả về bởi lệnh giải thích, bạn sẽ có thể thấy cách MongoDB phân tích cú pháp chuỗi tìm kiếm đã cho. Quan sát rằng nó đã bỏ qua các từ dừng như
{
69 và bắt nguồn từ
{
32 đến
{
41.  

Bạn cũng có thể xem các thuật ngữ mà chúng tôi đã bỏ qua khi tìm kiếm và các cụm từ chúng tôi đã sử dụng trong phần

{
72.   

1
4
9
2
    "likes": 60, 
1
3
    "likes": 60, 
3
4
    "likes": 60, 
5
5
    "likes": 60, 
7
{
0
    "likes": 60, 
9
{
2
5
1
5
2
5
3
5
4
    "likes": 60, 
3
5
6
5
7
5
8
5
9
    "year":2015, 
0
    "year":2015, 
1
    "year":2015, 
2
    "year":2015, 
3
    "year":2015, 
4
5
9
    "year":2015, 
6
    "year":2015, 
7
    "year":2015, 
8
    "year":2015, 
9
{
00
5
9
{
02
{
03
{
04
{
05

Truy vấn giải thích sẽ rất hữu ích khi chúng tôi thực hiện các truy vấn tìm kiếm phức tạp hơn và muốn phân tích chúng

Tìm kiếm văn bản có trọng số

Khi chúng tôi có các chỉ mục trên nhiều trường trong tài liệu của mình, hầu hết các trường sẽ quan trọng hơn (i. e. nặng hơn) so với cái kia. Ví dụ: khi bạn đang tìm kiếm trên một blog, tiêu đề của blog phải có trọng số cao nhất, tiếp theo là nội dung blog

Trọng số mặc định cho mọi trường được lập chỉ mục là 1. Để gán trọng số tương đối cho các trường được lập chỉ mục, bạn có thể bao gồm tùy chọn 

{
73 trong khi sử dụng lệnh 
{
74

Hãy hiểu điều này với một ví dụ. Nếu bạn thử tìm kiếm từ khóa 

{
62 với các chỉ mục hiện tại của chúng tôi, kết quả sẽ là hai tài liệu, cả hai đều có cùng số điểm.    

1
{
07

1
{
09_______5_______7_______
    "content":"Dogs are man's best friend", 
9

Bây giờ chúng ta hãy sửa đổi các chỉ mục của mình để bao gồm các trọng số;

1
{
14

Hãy thử tìm kiếm từ khóa

{
62 ngay bây giờ và bạn sẽ thấy rằng tài liệu chứa từ khóa này trong trường 
{
29 có số điểm (2) cao hơn tài liệu khác (có 0. 66)

1
    "content":"Dogs are man's best friend", 
6_______5_______
3
    "content":"Dogs are man's best friend", 
9

Phân vùng chỉ mục văn bản

Khi dữ liệu được lưu trữ trong ứng dụng của bạn tăng lên, kích thước của các chỉ mục văn bản của bạn cũng tiếp tục tăng lên. Với sự gia tăng kích thước của các chỉ mục văn bản, MongoDB phải tìm kiếm tất cả các mục nhập được lập chỉ mục bất cứ khi nào tìm kiếm văn bản được thực hiện.  

Là một kỹ thuật để giữ cho tìm kiếm văn bản của bạn hiệu quả với các chỉ mục ngày càng tăng, bạn có thể giới hạn số lượng mục nhập chỉ mục được quét bằng cách sử dụng các điều kiện bình đẳng với tìm kiếm

{
31 thông thường. Một ví dụ rất phổ biến về điều này là tìm kiếm tất cả các bài đăng được thực hiện trong một năm/tháng nhất định hoặc tìm kiếm tất cả các bài đăng có danh mục/thẻ nhất định

Nếu bạn quan sát các tài liệu mà chúng tôi đang làm việc, chúng tôi có một trường

{
81 mà chúng tôi chưa sử dụng. Một tình huống phổ biến sẽ là tìm kiếm thư theo năm, cùng với tìm kiếm toàn văn mà chúng ta đã học về.  

Đối với điều này, chúng tôi có thể tạo một chỉ mục phức hợp chỉ định khóa chỉ mục tăng dần/giảm dần trên

{
81 theo sau là chỉ mục văn bản trên trường
{
29. Bằng cách này, chúng tôi đang làm hai điều quan trọng

  • Chúng tôi đang phân vùng hợp lý toàn bộ dữ liệu bộ sưu tập thành các tập hợp được phân tách theo năm
  • Điều này sẽ giới hạn tìm kiếm văn bản để chỉ quét những tài liệu thuộc một năm cụ thể (hoặc gọi nó là bộ)

Bỏ các chỉ mục mà bạn đã có và tạo một chỉ mục tổng hợp mới trên (

{
81,
{
29)

1
{
21

Bây giờ hãy thực hiện truy vấn sau để tìm kiếm tất cả thư đã được tạo vào năm 2015 và chứa từ khóa 

{
24

1
{
23

Truy vấn sẽ chỉ trả về một tài liệu phù hợp như mong đợi. Nếu bạn

{
87 truy vấn này và nhìn vào
{
88, bạn sẽ thấy rằng
{
89 cho truy vấn này là 1, điều này xác nhận rằng chỉ mục mới của chúng tôi đã được sử dụng đúng cách và MongoDB chỉ phải quét một tài liệu duy nhất trong khi bỏ qua tất cả các tài liệu khác một cách an toàn.

Chỉ mục văn bản. Những lợi ích

Chỉ mục văn bản có thể làm gì thêm?

Chúng ta đã đi một chặng đường dài trong bài viết này để tìm hiểu về chỉ mục văn bản. Có nhiều khái niệm khác mà bạn có thể thử nghiệm với các chỉ mục văn bản. Nhưng do khuôn khổ của bài viết này, chúng tôi sẽ không thể thảo luận chi tiết về chúng ngày hôm nay. Tuy nhiên, chúng ta hãy có một cái nhìn ngắn gọn về những chức năng này là gì

  • Chỉ mục văn bản cung cấp hỗ trợ đa ngôn ngữ, cho phép bạn tìm kiếm bằng các ngôn ngữ khác nhau bằng cách sử dụng toán tử
    {
    
    90. MongoDB hiện hỗ trợ khoảng 15 ngôn ngữ, bao gồm tiếng Pháp, tiếng Đức, tiếng Nga, v.v.
  • Chỉ mục văn bản có thể được sử dụng trong các truy vấn đường dẫn tổng hợp. Giai đoạn đối sánh trong tìm kiếm tổng hợp có thể chỉ định việc sử dụng truy vấn tìm kiếm toàn văn
  • Bạn có thể sử dụng các toán tử thông thường của mình để chiếu, lọc, giới hạn, sắp xếp, v.v. , trong khi làm việc với chỉ mục văn bản

Lập chỉ mục văn bản MongoDB so với. Cơ sở dữ liệu tìm kiếm bên ngoài

Lưu ý rằng tìm kiếm toàn văn MongoDB không phải là sự thay thế hoàn toàn cho cơ sở dữ liệu công cụ tìm kiếm truyền thống được sử dụng với MongoDB, nên sử dụng chức năng MongoDB gốc vì những lý do sau

  • Theo một cuộc nói chuyện gần đây tại MongoDB, phạm vi tìm kiếm văn bản hiện tại hoạt động hoàn toàn tốt đối với phần lớn các ứng dụng (khoảng 80%) được xây dựng bằng MongoDB ngày nay
  • Xây dựng các khả năng tìm kiếm của ứng dụng của bạn trong cùng một cơ sở dữ liệu ứng dụng giúp giảm độ phức tạp về kiến ​​trúc của ứng dụng
  • Tìm kiếm văn bản MongoDB hoạt động trong thời gian thực, không có bất kỳ độ trễ hoặc cập nhật hàng loạt nào. Thời điểm bạn chèn hoặc cập nhật tài liệu, các mục nhập chỉ mục văn bản được cập nhật
  • Tìm kiếm văn bản được tích hợp vào các chức năng nhân db của MongoDB, nó hoàn toàn nhất quán và hoạt động tốt ngay cả với phân đoạn và sao chép
  • Nó tích hợp hoàn hảo với các tính năng Mongo hiện có của bạn như bộ lọc, tổng hợp, cập nhật, v.v.    

Chỉ mục văn bản. nhược điểm

Tìm kiếm toàn văn bản là một tính năng tương đối mới trong MongoDB, có một số chức năng mà nó hiện đang thiếu. Tôi sẽ chia chúng thành ba loại. Chúng ta hãy có một cái nhìn

Các chức năng bị thiếu trong tìm kiếm văn bản

  • Các chỉ mục văn bản hiện không có khả năng hỗ trợ các giao diện có thể cắm được như các trình tạo gốc có thể cắm được, các từ dừng, v.v.
  • Họ hiện không hỗ trợ các tính năng như tìm kiếm dựa trên từ đồng nghĩa, từ tương tự, v.v.
  • Họ không lưu trữ các vị trí hạn, tôi. e. số lượng từ mà hai từ khóa được phân tách
  • Bạn không thể chỉ định thứ tự sắp xếp cho biểu thức sắp xếp từ chỉ mục văn bản

Hạn chế trong các chức năng hiện có

  • Chỉ mục văn bản phức hợp không thể bao gồm bất kỳ loại chỉ mục nào khác, chẳng hạn như chỉ mục đa khóa hoặc chỉ mục không gian địa lý. Ngoài ra, nếu chỉ mục văn bản phức hợp của bạn bao gồm bất kỳ khóa chỉ mục nào trước khóa chỉ mục văn bản, thì tất cả các truy vấn phải chỉ định toán tử đẳng thức cho các khóa trước đó
  • Có một số hạn chế dành riêng cho truy vấn. Ví dụ: một truy vấn chỉ có thể chỉ định một biểu thức
    {
    
    31 duy nhất, bạn không thể sử dụng
    {
    
    31 với
    {
    
    93, bạn không thể sử dụng lệnh
    {
    
    94 với
    {
    
    31, sử dụng
    {
    
    31 với
    {
    
    97 cần lập chỉ mục tất cả các mệnh đề trong biểu thức
    {
    
    97 của bạn, v.v.

Nhược điểm về hiệu suất

  • Chỉ mục văn bản tạo chi phí trong khi chèn tài liệu mới. Điều này lần lượt đánh vào thông lượng chèn
  • Một số truy vấn như tìm kiếm cụm từ có thể tương đối chậm

kết thúc

Tìm kiếm toàn văn luôn là một trong những tính năng được yêu cầu nhiều nhất của MongoDB. Trong bài viết này, chúng tôi đã bắt đầu với phần giới thiệu tìm kiếm toàn văn bản là gì, trước khi chuyển sang các khái niệm cơ bản về tạo chỉ mục văn bản.  

Sau đó, chúng tôi đã khám phá lập chỉ mục phức hợp, lập chỉ mục ký tự đại diện, tìm kiếm cụm từ và tìm kiếm phủ định. Hơn nữa, chúng tôi đã khám phá một số khái niệm quan trọng như phân tích chỉ mục văn bản, tìm kiếm có trọng số và phân vùng hợp lý các chỉ mục của bạn. Chúng tôi có thể mong đợi một số cập nhật lớn cho chức năng này trong các bản phát hành sắp tới của MongoDB.  

Tôi khuyên bạn nên thử tìm kiếm văn bản và chia sẻ suy nghĩ của mình. Nếu bạn đã triển khai nó trong ứng dụng của mình, vui lòng chia sẻ kinh nghiệm của bạn tại đây. Cuối cùng, vui lòng gửi câu hỏi, suy nghĩ và đề xuất của bạn về bài viết này trong phần bình luận.  

Làm cách nào để tìm kiếm văn bản trong MongoDB?

Sử dụng toán tử truy vấn $text để thực hiện tìm kiếm văn bản trên bộ sưu tập có chỉ mục văn bản . $text sẽ mã hóa chuỗi tìm kiếm bằng cách sử dụng khoảng trắng và hầu hết các dấu chấm câu làm dấu phân cách và thực hiện OR logic của tất cả các mã thông báo như vậy trong chuỗi tìm kiếm.

Các ngôn ngữ khác nhau được MongoDB hỗ trợ là gì?

Các ngôn ngữ được hỗ trợ chính thức và tương thích với MongoDB là. .
Nút. js
con trăn

Tôi có thể sử dụng MongoDB làm công cụ tìm kiếm không?

Với dịch vụ MongoDB Atlas Full-Text Search mới, chúng tôi đã làm cho việc tích hợp các khả năng tìm kiếm đơn giản nhưng phức tạp vào các ứng dụng MongoDB của bạn trở nên dễ dàng hơn bao giờ hết . Để chứng minh nó dễ dàng như thế nào, hãy xây dựng một công cụ tìm kiếm phim - chỉ trong 10 phút.

$GT trong MongoDB là gì?

$gt chọn những tài liệu có giá trị của trường lớn hơn (i. e. > ) giá trị đã chỉ định . Đối với hầu hết các kiểu dữ liệu, toán tử so sánh chỉ thực hiện so sánh trên các trường trong đó loại BSON khớp với loại của giá trị truy vấn. MongoDB hỗ trợ so sánh BSON chéo có giới hạn thông qua Type Bracketing.