Tìm kiếm Atlas
Cấu hình các đường dẫn mở rộng Driver-native cho Atlas Search operator, compound/filter, score, highlight, sequence token, paging/count dựa trên phiên bản 1.0.0.
Atlas Search cơ bản
$search và $searchMeta phải là stage đầu tiên của pipeline tổng hợp, vì vậy chúng tách biệt với luồng fields(...).end() thông thường. Cũng có thể sử dụng .search() mà không cần chỉ định index.
Search operator
• builder gốc: text, phrase, autocomplete, equals, exists, in, range, compound
• clause có thể tái sử dụng: SearchOperators.text/phrase/autocomplete/equals/in/exists/range
• operator gốc Driver-native: operator(SearchOperator)
• wrapper Driver có tên: SearchOperators.driver(name, operator)
compound hỗ trợ must, mustNot, should, filter, minimumShouldMatch, score và cũng có thể truyền trực tiếp AtlasSearchOperator thông thường.
Text / Phrase / Autocomplete
• text: path(s), query(ies), fuzzy, matchCriteria, synonyms, score
• phrase: path(s), query(ies), slop, synonyms, score
• autocomplete: single path, query(ies), tokenOrder, fuzzy, score
• fuzzy(...) và synonyms(...) không được sử dụng đồng thời.
Sự khác biệt giữa Search clause và các trường sau tìm kiếm.
search().fields(...) không phải là filter bên trong $search mà là $match thông thường sau $search. Để hạn chế ứng viên ở bước chỉ mục tìm kiếm, hãy sử dụng compound.filter(...).
Score và sắp xếp.
scoreDesc()/scoreAsc() và sắp xếp thông thường được xác định theo thứ tự gọi. Để có phân trang ổn định, nên sắp xếp theo score cùng với trường duy nhất ổn định.
Highlight / chi tiết score / sequence token
Alias cơ bản là highlights, scoreDetails, searchSequenceToken. addFieldsScoreDetails() cũng kích hoạt chi tiết điểm của tùy chọn tìm kiếm.
Phân trang / mã thông báo chuỗi / số lượng
count().execute()
Số lượng pipeline cuối cùng đã phản ánh fields(...) và ngưỡng điểm sau tìm kiếm.
count().executeSearchMeta()
Số lượng metadata $searchMeta. Hỗ trợ SearchCountType.TOTAL/LOWER_BOUND và không thực hiện $match sau tìm kiếm.
existsQuery().execute()
Kiểm tra xem kết quả pipeline tìm kiếm có tồn tại hơn một bản ghi hay không.
Mở rộng Driver-native
stage(Bson) được thêm ngay sau $search và không áp dụng cho pipeline số lượng metadata $searchMeta của executeSearchMeta(). Nếu tính năng Driver mới được thêm trước API tiện lợi DSL, hãy ưu tiên sử dụng operator, driverOptions, stage, SortSpec.driver, customizeAggregation.