Guest User

Untitled

a guest
Jun 19th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. Была создана коллекция из 1 млн записей, каждый документ представляет из себя что-то подобное:
  2. {
  3. "_id" : ObjectId("5b23ddc1b17142465058b7dc"),
  4. "generation" : "II",
  5. "modification" : "GRL2",
  6. "drive" : "4WD",
  7. "model" : "m3",
  8. "grade" : "active",
  9. "trim" : "TTN1",
  10. "color" : "1BE",
  11. "tags" : [
  12. "color_1BE",
  13. "generation_II",
  14. "modification_GRL2",
  15. "drive_4WD",
  16. "model_m3",
  17. "brand_Mazda",
  18. "grade_active",
  19. "transmission_4AT",
  20. "trim_TTN1",
  21. "engine_power_150"
  22. ],
  23. "brand" : "Mazda",
  24. "transmission" : "4AT",
  25. "engine_power" : 150
  26. }
  27. где каждый атрибут формируется рандомно
  28.  
  29. Был создан индекс tags_text:
  30. {
  31. "_fts" : "text",
  32. "_ftsx" : 1
  33. }
  34.  
  35. Далее формирую следующий запрос по всем критериям:
  36. db.getCollection('vehicles').find(
  37. { $text: { $search: "brand_Mazda model_m3 generation_II grade_active modification_GRL2 engine_power_150 transmission_4AT drive_4WD trim_TTN1 color_1BE" } },
  38. { score: { $meta: "textScore" } }
  39. ).sort( { score: { $meta: "textScore" } } ).limit(100)
  40.  
  41. В итоге получаю выдачу из 100 записей, отсортированных по score, первая из них выглядит так:
  42. {
  43. "_id" : ObjectId("5b23ddc1b17142465058b7dc"),
  44. "generation" : "II",
  45. "modification" : "GRL2",
  46. "drive" : "4WD",
  47. "model" : "m3",
  48. "grade" : "active",
  49. "trim" : "TTN1",
  50. "color" : "1BE",
  51. "tags" : [
  52. "color_1BE",
  53. "generation_II",
  54. "modification_GRL2",
  55. "drive_4WD",
  56. "model_m3",
  57. "brand_Mazda",
  58. "grade_active",
  59. "transmission_4AT",
  60. "trim_TTN1",
  61. "engine_power_150"
  62. ],
  63. "brand" : "Mazda",
  64. "transmission" : "4AT",
  65. "engine_power" : 150,
  66. "score" : 10.8
  67. }
  68. Судя по выдаче всего 3 записи со значенеим score 10.8, то есть всего 3 машины в базе полностью идентичны
  69.  
  70. В среднем время выполнения такого запроса 3-5 секунд в зависимости от количества критериев поиска:
  71. "executionStats" : {
  72. "executionSuccess" : true,
  73. "nReturned" : 100,
  74. "executionTimeMillis" : 4226,
  75. "totalKeysExamined" : 3160202,
  76. "totalDocsExamined" : 1000000,
  77. }
  78.  
  79. Если понизить критерии полнотекстового поиска, например убрав brand_Mazda model_m3 и указав это в фильтре, то получаем следуюзие результаты:
  80. "executionSuccess" : true,
  81. "nReturned" : 100,
  82. "executionTimeMillis" : 3848,
  83. "totalKeysExamined" : 1909594,
  84. "totalDocsExamined" : 1796118,
  85. }
Add Comment
Please, Sign In to add comment