Hướng dẫn how does mongodb text search work? - tìm kiếm văn bản mongodb hoạt động như thế nào?

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB Manual

MongoDB cung cấp một giải pháp tìm kiếm toàn văn bản, tìm kiếm Atlas MongoDB, cho dữ liệu được lưu trữ trên Atlas MongoDB. Người dùng chạy triển khai MongoDB tự quản lý có quyền truy cập vào khả năng tìm kiếm văn bản tại chỗ.full-text search solution, MongoDB Atlas Search, for data hosted on MongoDB Atlas. Users running self-managed MongoDB deployments have access to on-premises text search capabilities.

Đối với người dùng MongoDB Atlas, tìm kiếm Atlas của MongoDB hỗ trợ lập chỉ mục văn bản chi tiết và ngôn ngữ truy vấn phong phú cho kết quả tìm kiếm nhanh, có liên quan. Để tìm hiểu thêm về các chỉ mục tìm kiếm toàn văn bản và các truy vấn $search, hãy xem:$search queries, see:

  • Atlas Các giai đoạn đường ống tổng hợp tìm kiếm

  • Xác định các chỉ mục tìm kiếm Atlas

  • Chạy các truy vấn tìm kiếm Atlas

Atlas Search cũng cung cấp các máy phân tích chung cho văn bản phân tích cú pháp cho tìm kiếm toàn văn, bao gồm hỗ trợ cho hơn 40 máy phân tích cụ thể ngôn ngữ. also offers common analyzers for parsing text for full-text search, including support for over 40 language-specific analyzers.

Đối với triển khai tại chỗ (không phải ATLAS), khả năng tìm kiếm văn bản của MongoDB hỗ trợ các hoạt động truy vấn thực hiện tìm kiếm văn bản của nội dung chuỗi. Để thực hiện tìm kiếm văn bản, MongoDB sử dụng chỉ mục văn bản và toán tử $text.

Ghi chú

Lượt xem không hỗ trợ tìm kiếm văn bản.

Để tìm hiểu thêm về tìm kiếm văn bản để triển khai tại chỗ, xem:

  • Chỉ mục văn bản

  • Toán tử tìm kiếm văn bản

MongoDB cũng hỗ trợ tìm kiếm văn bản cho các ngôn ngữ khác nhau. Xem ngôn ngữ tìm kiếm văn bản để biết danh sách các ngôn ngữ được hỗ trợ.

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB Manual

MongoDB hỗ trợ các hoạt động truy vấn thực hiện tìm kiếm văn bản của nội dung chuỗi. Để thực hiện tìm kiếm văn bản, MongoDB sử dụng chỉ mục văn bản và toán tử $text.

Ghi chú

Lượt xem không hỗ trợ tìm kiếm văn bản.

Ví dụ này trình bày cách xây dựng một chỉ mục văn bản và sử dụng nó để tìm các cửa hàng cà phê, chỉ được đưa ra các trường văn bản.

Tạo bộ sưu tập stores với các tài liệu sau:

db.stores.insert(
[
{ _id: 1, name: "Java Hut", description: "Coffee and cakes" },
{ _id: 2, name: "Burger Buns", description: "Gourmet hamburgers" },
{ _id: 3, name: "Coffee Shop", description: "Just coffee" },
{ _id: 4, name: "Clothes Clothes Clothes", description: "Discount clothing" },
{ _id: 5, name: "Java Shopping", description: "Indonesian goods" }
]
)

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 trên nội dung chuỗi. Các chỉ mục

db.stores.createIndex( { name: "text", description: "text" } )

0 có thể bao gồm bất kỳ trường nào có giá trị là chuỗi hoặc một mảng các phần tử chuỗi.

Để thực hiện các truy vấn tìm kiếm văn bản, bạn phải có chỉ mục

db.stores.createIndex( { name: "text", description: "text" } )

0 trên bộ sưu tập của mình. 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.one text search index, but that index can cover multiple fields.

Ví dụ: bạn có thể chạy các phần sau trong shell

db.stores.createIndex( { name: "text", description: "text" } )

2 để cho phép tìm kiếm văn bản trên các trường

db.stores.createIndex( { name: "text", description: "text" } )

3 và

db.stores.createIndex( { name: "text", description: "text" } )

4:

db.stores.createIndex( { name: "text", description: "text" } )

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 với 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à trình phân cách và thực hiện logic

db.stores.createIndex( { name: "text", description: "text" } )

7 của tất cả các mã thông báo như vậy trong chuỗi tìm kiếm.

Ví dụ: bạn có thể sử dụng truy vấn sau để tìm tất cả các cửa hàng chứa bất kỳ điều khoản nào từ danh sách "cà phê", "cửa hàng" và "java":

db.stores.find( { $text: { $search: "java coffee shop" } } )

Bạn cũng có thể tìm kiếm các cụm từ chính xác bằng cách gói chúng trong các trích dẫn kép. Nếu chuỗi $search bao gồm một cụm từ và các thuật ngữ riêng lẻ, tìm kiếm văn bản sẽ chỉ khớp các tài liệu bao gồm cụm từ.

Ví dụ: những điều sau đây sẽ tìm thấy tất cả các tài liệu có chứa "quán cà phê":

db.stores.find( { $text: { $search: "\"coffee shop\"" } } )

Để biết thêm thông tin, xem các cụm từ.

Để loại trừ một từ, bạn có thể tạo một ký tự "

db.stores.createIndex( { name: "text", description: "text" } )

9". Ví dụ: để tìm tất cả các cửa hàng có chứa "java" hoặc "cửa hàng" nhưng không phải "cà phê", hãy sử dụng các cửa hàng sau:

db.stores.find( { $text: { $search: "java shop -coffee" } } )

MongoDB sẽ trả về kết quả của nó theo thứ tự chưa được phân loại theo mặc định. Tuy nhiên, các truy vấn tìm kiếm văn bản sẽ tính toán điểm liên quan cho mỗi tài liệu chỉ định mức độ một tài liệu phù hợp với truy vấn.

Để sắp xếp các kết quả theo thứ tự điểm liên quan, bạn phải chiếu rõ ràng trường

db.stores.find( { $text: { $search: "java coffee shop" } } )

0

db.stores.find( { $text: { $search: "java coffee shop" } } )

1 và sắp xếp trên đó:

db.stores.find(
{ $text: { $search: "java coffee shop" } },
{ score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )

Tìm kiếm văn bản cũng có sẵn trong đường ống tổng hợp.

MongoDB hỗ trợ tìm kiếm văn bản cho các ngôn ngữ khác nhau. Xem ngôn ngữ tìm kiếm văn bản để biết danh sách các ngôn ngữ được hỗ trợ.

Đối với dữ liệu được lưu trữ trên MongoDB Atlas, Atlas Search cung cấp hỗ trợ cho các ngôn ngữ bổ sung. Để xem danh sách đầy đủ các ngôn ngữ được hỗ trợ bởi Atlas Search, hãy xem các máy phân tích ngôn ngữ tìm kiếm Atlas.Atlas Search provides support for additional languages. To see the complete list of languages supported by Atlas Search, see the Atlas Search Language Analyzers.

Chỉ số văn bản MongoDB hoạt động như thế nào?

Đối với một chỉ mục văn bản, trọng số của trường được lập chỉ mục biểu thị tầm quan trọng của trường so với các trường được lập chỉ mục khác về điểm số tìm kiếm văn bản. Đối với mỗi trường được lập chỉ mục trong tài liệu, MongoDB nhân số lượng trận đấu với trọng số và tổng kết quả.For each indexed field in the document, MongoDB multiplies the number of matches by the weight and sums the results.

SQL đầy đủ như thế nào

Các truy vấn toàn văn thực hiện tìm kiếm ngôn ngữ đối với dữ liệu văn bản trong các chỉ mục toàn văn bằng cách vận hành trên các từ và cụm từ dựa trên các quy tắc của một ngôn ngữ cụ thể như tiếng Anh hoặc tiếng Nhật.Các truy vấn toàn văn có thể bao gồm các từ và cụm từ đơn giản hoặc nhiều dạng của một từ hoặc cụm từ.perform linguistic searches against text data in full-text indexes by operating on words and phrases based on the rules of a particular language such as English or Japanese. Full-text queries can include simple words and phrases or multiple forms of a word or phrase.

MongoDB có tốt cho tìm kiếm không?

Nó cung cấp khả năng mở rộng cao, độ tin cậy và hiệu suất.MongoDB cũng sử dụng các chỉ mục dựa trên văn bản cho các truy vấn toàn văn, nhưng tìm kiếm là chậm và máy chủ tìm kiếm không cung cấp các tokenizer và trình phân tích như Elaticsearch.the search is slow, and the search server does not provide tokenizers and analyzers like Elasticsearch does.

Những gì đã đầy

FTS liên quan đến việc lập chỉ mục các từ riêng lẻ trong trường văn bản để tìm kiếm thông qua nhiều bản ghi nhanh chóng.Sử dụng Like vẫn yêu cầu bạn thực hiện tìm kiếm chuỗi (tuyến tính hoặc tương tự) trong trường.