Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Была создана коллекция из 1 млн записей, каждый документ представляет из себя что-то подобное:
- {
- "_id" : ObjectId("5b23ddc1b17142465058b7dc"),
- "generation" : "II",
- "modification" : "GRL2",
- "drive" : "4WD",
- "model" : "m3",
- "grade" : "active",
- "trim" : "TTN1",
- "color" : "1BE",
- "tags" : [
- "color_1BE",
- "generation_II",
- "modification_GRL2",
- "drive_4WD",
- "model_m3",
- "brand_Mazda",
- "grade_active",
- "transmission_4AT",
- "trim_TTN1",
- "engine_power_150"
- ],
- "brand" : "Mazda",
- "transmission" : "4AT",
- "engine_power" : 150
- }
- где каждый атрибут формируется рандомно
- Был создан индекс tags_text:
- {
- "_fts" : "text",
- "_ftsx" : 1
- }
- Далее формирую следующий запрос по всем критериям:
- db.getCollection('vehicles').find(
- { $text: { $search: "brand_Mazda model_m3 generation_II grade_active modification_GRL2 engine_power_150 transmission_4AT drive_4WD trim_TTN1 color_1BE" } },
- { score: { $meta: "textScore" } }
- ).sort( { score: { $meta: "textScore" } } ).limit(100)
- В итоге получаю выдачу из 100 записей, отсортированных по score, первая из них выглядит так:
- {
- "_id" : ObjectId("5b23ddc1b17142465058b7dc"),
- "generation" : "II",
- "modification" : "GRL2",
- "drive" : "4WD",
- "model" : "m3",
- "grade" : "active",
- "trim" : "TTN1",
- "color" : "1BE",
- "tags" : [
- "color_1BE",
- "generation_II",
- "modification_GRL2",
- "drive_4WD",
- "model_m3",
- "brand_Mazda",
- "grade_active",
- "transmission_4AT",
- "trim_TTN1",
- "engine_power_150"
- ],
- "brand" : "Mazda",
- "transmission" : "4AT",
- "engine_power" : 150,
- "score" : 10.8
- }
- Судя по выдаче всего 3 записи со значенеим score 10.8, то есть всего 3 машины в базе полностью идентичны
- В среднем время выполнения такого запроса 3-5 секунд в зависимости от количества критериев поиска:
- "executionStats" : {
- "executionSuccess" : true,
- "nReturned" : 100,
- "executionTimeMillis" : 4226,
- "totalKeysExamined" : 3160202,
- "totalDocsExamined" : 1000000,
- }
- Если понизить критерии полнотекстового поиска, например убрав brand_Mazda model_m3 и указав это в фильтре, то получаем следуюзие результаты:
- "executionSuccess" : true,
- "nReturned" : 100,
- "executionTimeMillis" : 3848,
- "totalKeysExamined" : 1909594,
- "totalDocsExamined" : 1796118,
- }
Add Comment
Please, Sign In to add comment