Hướng dẫn text index mongodb - chỉ mục văn bản mongodb

Trên trang này

  • Tổng quan
  • Phiên bản
  • Tạo chỉ mục văn bản
  • Trường hợp vô cảm
  • Sự vô cảm diarritic
  • DELIMITERS TOKENISION
  • Mục nhập chỉ mục
  • Ngôn ngữ được hỗ trợ và các từ dừng
  • sparse Tài sản
  • Những hạn chế
  • Yêu cầu lưu trữ và chi phí hiệu suất
  • Hỗ trợ tìm kiếm văn bản

Để chạy các truy vấn tìm kiếm văn bản trên triển khai tại chỗ, bạn phải có chỉ mục văn bản trên bộ sưu tập của mình. 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 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.text index on your collection. MongoDB provides text indexes to support text search queries on string content. Text indexes can include any field whose value is a string or an array of string elements. A collection can only have one text search index, but that index can cover multiple fields.

text Phiên bản chỉ mục

Sự mô tả

Phiên bản 3

MongoDB giới thiệu phiên bản 3 của chỉ số text. Phiên bản 3 là phiên bản mặc định của các chỉ mục text được tạo trong MongoDB 3.2 trở lên.

Phiên bản 2

MongoDB 2.6 giới thiệu phiên bản 2 của chỉ số text. Phiên bản 2 là phiên bản mặc định của các chỉ mục text được tạo trong loạt MongoDB 2.6 và 3.0.

Phiên bản 1

MongoDB 2.4 giới thiệu phiên bản 1 của chỉ số text. MongoDB 2.4 chỉ có thể hỗ trợ phiên bản

db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)
1.

Để ghi đè phiên bản mặc định và chỉ định một phiên bản khác, bao gồm tùy chọn

db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)
2 khi tạo chỉ mục.

Quan trọng

Một bộ sưu tập có thể có nhiều nhất một chỉ mục text.one text index.

Tìm kiếm Atlas (có sẵn trong MongoDB ATLAS) hỗ trợ nhiều chỉ mục tìm kiếm toàn văn trên một bộ sưu tập. Để tìm hiểu thêm, xem tài liệu tìm kiếm ATLAS.MongoDB Atlas) supports multiple full-text search indexes on a single collection. To learn more, see the Atlas Search documentation.

Để tạo chỉ mục text, hãy sử dụng phương thức

db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)
5. Để lập chỉ mục một trường chứa một chuỗi hoặc một mảng các phần tử chuỗi, bao gồm trường và chỉ định chuỗi chữ
db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)
6 trong tài liệu chỉ mục, như trong ví dụ sau:

db.reviews.createIndex( { comments: "text" } )

Bạn có thể lập chỉ mục nhiều trường cho chỉ mục text. Ví dụ sau đây tạo ra một chỉ mục text trên các trường

db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)
9 và

db.collection.createIndex( { "$**": "text" } )

0:

db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)

Một chỉ số ghép có thể bao gồm các khóa chỉ mục text kết hợp với các khóa chỉ số tăng dần/giảm dần. Để biết thêm thông tin, xem Chỉ số Hợp chất.Compound Index.

Để bỏ chỉ mục text, hãy sử dụng tên chỉ mục. Xem Sử dụng tên chỉ mục để bỏ chỉ mục text để biết thêm thông tin.

Đối với chỉ số text, trọng lượng 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ả. Sử dụng số tiền này, MongoDB sau đó tính điểm cho tài liệu. Xem toán tử

db.collection.createIndex( { "$**": "text" } )

5 để biết chi tiết về trả về và sắp xếp theo điểm văn bản.

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

db.collection.createIndex( { "$**": "text" } )

6 trong phương thức
db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)
5.

Để biết thêm thông tin sử dụng trọng số để kiểm soát kết quả tìm kiếm văn bản, hãy xem kết quả tìm kiếm kiểm soát với trọng số.

Ghi chú

Các chỉ mục văn bản ký tự đại diện khác biệt với các chỉ số ký tự đại diện. Các chỉ mục ký tự đại diện không thể hỗ trợ các truy vấn bằng toán tử

db.collection.createIndex( { "$**": "text" } )

8.

Trong khi các chỉ mục văn bản ký tự đại diện và các chỉ mục ký tự đại diện chia sẻ mẫu trường đại học

db.collection.createIndex( { "$**": "text" } )

9, chúng là các loại chỉ số riêng biệt. Chỉ các chỉ mục văn bản đại diện hỗ trợ toán tử

db.collection.createIndex( { "$**": "text" } )

8.

Khi tạo chỉ mục text trên nhiều trường, bạn cũng có thể sử dụng bộ xác định ký tự đại diện (

db.collection.createIndex( { "$**": "text" } )

9). Với chỉ mục văn bản đại diện, MongoDB chỉ mục mọi trường chứa dữ liệu chuỗi cho mỗi tài liệu trong bộ sưu tập. Ví dụ sau tạo chỉ mục văn bản bằng trình xác định ký tự đại diện:

db.collection.createIndex( { "$**": "text" } )

Chỉ mục này cho phép tìm kiếm văn bản trên tất cả các trường với nội dung chuỗi. Một chỉ mục như vậy có thể hữu ích với dữ liệu không có cấu trúc cao nếu không rõ các trường nào sẽ bao gồm trong chỉ mục văn bản hoặc cho truy vấn đặc biệt.

Các chỉ mục văn bản ký tự đại diện là các chỉ mục text trên nhiều trường. Do đó, bạn có thể gán trọng số cho các trường cụ thể trong quá trình tạo chỉ mục để kiểm soát xếp hạng của kết quả. Để biết thêm thông tin sử dụng trọng số để kiểm soát kết quả tìm kiếm văn bản, hãy xem kết quả tìm kiếm kiểm soát với trọng số.

Các chỉ mục văn bản Wildcard, như với tất cả các chỉ mục văn bản, có thể là một phần của các chỉ mục ghép. Ví dụ: sau đây tạo ra một chỉ số hợp chất trên trường

db.collection.createIndex( { a: 1, "$**": "text" } )

4 cũng như bộ xác định ký tự đại diện:

db.collection.createIndex( { a: 1, "$**": "text" } )

Như với tất cả các chỉ mục văn bản hỗn hợp, vì

db.collection.createIndex( { a: 1, "$**": "text" } )

4 đi trước khóa chỉ mục văn bản, để thực hiện tìm kiếm

db.collection.createIndex( { "$**": "text" } )

8 với chỉ mục này, vị từ truy vấn phải bao gồm các điều kiện khớp bình đẳng

db.collection.createIndex( { a: 1, "$**": "text" } )

4. Để biết thông tin về các chỉ mục văn bản hỗn hợp, xem các chỉ mục văn bản hợp chất.compound text indexes, since the

db.collection.createIndex( { a: 1, "$**": "text" } )

4 precedes the text index key, in order to perform a

db.collection.createIndex( { "$**": "text" } )

8 search with this index, the query predicate must include an equality match conditions

db.collection.createIndex( { a: 1, "$**": "text" } )

4. For information on compound text indexes, see Compound Text Indexes.

Đã thay đổi trong phiên bản 3.2.

Chỉ số phiên bản 3 text hỗ trợ các ngôn ngữ phổ biến ____39, đơn giản sparse0 và đối với các ngôn ngữ Thổ Nhĩ Kỳ, các nếp gấp trường hợp sparse1 đặc biệt như được chỉ định trong gập lại trường hợp cơ sở dữ liệu ký tự Unicode 8.0.Unicode 8.0 Character Database Case Folding.

Các trường hợp các nếp gấp mở rộng trường hợp không nhạy cảm của chỉ số text để bao gồm các ký tự có dấu hiệu, chẳng hạn như sparse3 và sparse4, và các ký tự từ bảng chữ cái không latin, chẳng hạn như "и" và "и" trong bảng chữ cái Cyrillic.

Phiên bản 3 của chỉ số text cũng không nhạy cảm. Như vậy, chỉ số cũng không phân biệt giữa sparse3, sparse4, sparse8 và sparse9.diacritic insensitive. As such, the index also does not distinguish between sparse3, sparse4, sparse8, and sparse9.

Các phiên bản trước của chỉ số text chỉ không nhạy cảm với text1; tức là trường hợp không nhạy cảm đối với các ký tự Latin không gây hại. Đối với tất cả các ký tự khác, các phiên bản trước của chỉ mục văn bản coi chúng là khác biệt.

Đã thay đổi trong phiên bản 3.2.

Với phiên bản 3, chỉ số text là không nhạy cảm. Đó là, chỉ số không phân biệt giữa các ký tự có chứa các dấu hiệu điều trị và đối tác không được đánh dấu của chúng, chẳng hạn như sparse3, text4 và sparse8. Cụ thể hơn, chỉ mục text dải các ký tự được phân loại là DiaCritics trong danh sách prop cơ sở dữ liệu ký tự Unicode 8.0.Unicode 8.0 Character Database Prop List.

Phiên bản 3 của chỉ số text cũng không nhạy cảm với các ký tự có dấu hiệu. Như vậy, chỉ số cũng không phân biệt giữa sparse3, sparse4, sparse8 và sparse9.case insensitive to characters with diacritics. As such, the index also does not distinguish between sparse3, sparse4, sparse8, and sparse9.

Các phiên bản trước của chỉ số text đối xử với các ký tự bằng các dấu hiệu là khác biệt.

Đã thay đổi trong phiên bản 3.2.

Với phiên bản 3, chỉ số text là không nhạy cảm. Đó là, chỉ số không phân biệt giữa các ký tự có chứa các dấu hiệu điều trị và đối tác không được đánh dấu của chúng, chẳng hạn như sparse3, text4 và sparse8. Cụ thể hơn, chỉ mục text dải các ký tự được phân loại là DiaCritics trong danh sách prop cơ sở dữ liệu ký tự Unicode 8.0.Unicode 8.0 Character Database Prop List.

Phiên bản 3 của chỉ số text cũng không nhạy cảm với các ký tự có dấu hiệu. Như vậy, chỉ số cũng không phân biệt giữa sparse3, sparse4, sparse8 và sparse9.

Các phiên bản trước của chỉ số text đối xử với các ký tự bằng các dấu hiệu là khác biệt.

Đối với mã thông báo, chỉ mục phiên bản 3 text sử dụng các dấu phân cách được phân loại theo text4, text5, text6, text7, text8 và text9 trong danh sách prop cơ sở dữ liệu ký tự Unicode 8.0.language-specific suffix stemming.

Ví dụ: nếu được cung cấp một chuỗi text0, chỉ số text xử lý text2, text3 và không gian làm dấu phân cách.

Các phiên bản trước của chỉ số xử lý text2 như là một phần của thuật ngữ text5 và text3 như là một phần của thuật ngữ text7.

text Chỉ số mã hóa và bắt nguồn các thuật ngữ trong các trường được lập chỉ mục cho các mục nhập chỉ mục. text Chỉ mục lưu trữ một mục nhập chỉ mục cho mỗi thuật ngữ gốc duy nhất trong mỗi trường được lập chỉ mục cho mỗi tài liệu trong bộ sưu tập. Chỉ số sử dụng hậu tố cụ thể ngôn ngữ đơn giản.

MongoDB hỗ trợ tìm kiếm văn bản cho các ngôn ngữ khác nhau. text Chỉ số các từ dừng cụ thể về ngôn ngữ (ví dụ: bằng tiếng Anh, text1, text2,

db.collection.createIndex( { a: 1, "$**": "text" } )

4, text4, v.v.) và sử dụng hậu tố cụ thể ngôn ngữ đơn giản. Để biết danh sách các ngôn ngữ được hỗ trợ, hãy xem các ngôn ngữ tìm kiếm văn bản.

Nếu bạn chỉ định giá trị ngôn ngữ là text5, thì chỉ mục text sử dụng mã thông báo đơn giản mà không có danh sách các từ dừng và không có nguồn gốc.

Để chỉ định ngôn ngữ cho chỉ mục text, hãy xem Chỉ định ngôn ngữ cho chỉ mục văn bản.one text index.

text Các chỉ mục luôn thưa thớt và bỏ qua tùy chọn thưa thớt. Nếu một tài liệu thiếu trường chỉ mục text (hoặc trường là text0 hoặc một mảng trống), MongoDB sẽ không thêm mục nhập cho tài liệu vào chỉ mục text. Để chèn, MongoDB chèn tài liệu nhưng không thêm vào chỉ số text.MongoDB Atlas) supports multiple full-text search indexes on a single collection. To learn more, see the Atlas Search documentation.

Đối với một chỉ mục ghép bao gồm khóa chỉ mục text cùng với các khóa của các loại khác, chỉ trường chỉ mục text xác định liệu chỉ mục có tham chiếu tài liệu hay không. Các khóa khác không xác định liệu chỉ số có tham chiếu các tài liệu hay không.

Một bộ sưu tập có thể có nhiều nhất một chỉ mục text.compound text index; i.e. sort operations cannot use the ordering in the text index.

Tìm kiếm Atlas (có sẵn trong MongoDB ATLAS) hỗ trợ nhiều chỉ mục tìm kiếm toàn văn trên một bộ sưu tập. Để tìm hiểu thêm, xem tài liệu tìm kiếm ATLAS.

  • Bạn không thể sử dụng text6 nếu truy vấn bao gồm biểu thức truy vấn

    db.collection.createIndex( { "$**": "text" } )

    8.

  • Các hoạt động sắp xếp không thể có được thứ tự sắp xếp từ chỉ mục text, ngay cả từ chỉ mục văn bản hỗn hợp; tức là các hoạt động sắp xếp không thể sử dụng thứ tự trong chỉ mục văn bản.preceding the text index key, to perform a

    db.collection.createIndex( { "$**": "text" } )

    8 search, the query predicate must include equality match conditions on the preceding keys.

  • Chỉ số ghép có thể bao gồm khóa chỉ số text kết hợp với các khóa chỉ số tăng dần/giảm dần. Tuy nhiên, các chỉ số hợp chất này có các hạn chế sau:

Chỉ số hợp chất text không thể bao gồm bất kỳ loại chỉ số đặc biệt nào khác, chẳng hạn như các trường chỉ số đa khóa hoặc không gian địa lý.Text Index and Sort for additional limitations.

Nếu chỉ số hợp chất text bao gồm các khóa trước khóa chỉ số text, để thực hiện tìm kiếm

db.collection.createIndex( { "$**": "text" } )

8, vị từ truy vấn phải bao gồm các điều kiện khớp bình đẳng trên các khóa trước.

Khi tạo chỉ mục hợp chất text, tất cả các khóa chỉ mục text phải được liệt kê một cách liên tục trong tài liệu đặc tả chỉ mục.

Xem thêm chỉ mục văn bản và sắp xếp để biết các giới hạn bổ sung.

text Chỉ số chỉ hỗ trợ so sánh nhị phân đơn giản và không hỗ trợ đối chiếu.

Để tạo chỉ mục text trên một bộ sưu tập có đối chiếu không đơn giản, bạn phải chỉ định rõ ràng

db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)
13 khi tạo chỉ mục.

text Các chỉ mục có các yêu cầu lưu trữ và chi phí hiệu suất sau đây:

  • text Chỉ số có thể lớn. Chúng chứa một mục nhập chỉ mục cho mỗi từ sau hệ thống duy nhất trong mỗi trường được lập chỉ mục cho mỗi tài liệu được chèn.

  • Xây dựng chỉ số text rất giống với việc xây dựng một chỉ số đa khóa lớn và sẽ mất nhiều thời gian hơn so với việc xây dựng một chỉ mục (vô hướng) đơn giản trên cùng một dữ liệu.

  • Khi xây dựng một chỉ mục text lớn trên một bộ sưu tập hiện có, hãy đảm bảo rằng bạn có giới hạn đủ cao đối với các mô tả tệp mở. Xem các cài đặt được đề xuất.

  • text Các chỉ mục sẽ tác động đến thông lượng chèn vì MongoDB phải thêm một mục nhập chỉ mục cho mỗi từ sau hệ thống duy nhất trong mỗi trường được lập chỉ mục của mỗi tài liệu nguồn mới.

  • Ngoài ra, các chỉ mục text không lưu trữ các cụm từ hoặc thông tin về sự gần gũi của các từ trong các tài liệu. Do đó, các truy vấn cụm từ sẽ chạy hiệu quả hơn nhiều khi toàn bộ bộ sưu tập phù hợp với RAM.

Chỉ số text hỗ trợ các hoạt động truy vấn

db.collection.createIndex( { "$**": "text" } )

8. Để biết ví dụ về tìm kiếm văn bản, xem
db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)
22. Để biết các ví dụ về các hoạt động

db.collection.createIndex( { "$**": "text" } )

8 trong các đường ống tổng hợp, hãy xem tìm kiếm văn bản trong đường ống tổng hợp.