Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. var mongoose = require("mongoose");
  2. var SonicChannelSearch = require("sonic-channel").Search;
  3.  
  4. var MessageModel = mongoose.model("message", new mongoose.Schema({
  5. website_id : String,
  6. type : String,
  7. content : Object
  8. }));
  9.  
  10. var query_count = 0;
  11. var last_count = 0;
  12. var last_time_start = 0;
  13.  
  14. var worst_time = -1;
  15. var best_time = -1;
  16.  
  17. var query_next = function(sonicChannelSearch, cursor) {
  18. cursor.next()
  19. .then((message) => {
  20. // Done?
  21. if (message === null) {
  22. console.info("All done. Bye.");
  23.  
  24. process.exit(0);
  25.  
  26. return;
  27. }
  28.  
  29. var content = (
  30. (message.content || "").trim().split(" ").slice(0, 5).join(" ")
  31. );
  32.  
  33. if (content) {
  34. var commited = sonicChannelSearch.query(
  35. "messages", message.website_id, content,
  36.  
  37. (results, error) => {
  38. if (error) {
  39. console.error("Search error", error);
  40. }
  41.  
  42. if (last_count++ === 1000) {
  43. last_count = 1;
  44.  
  45. var date_now = Date.now();
  46.  
  47. var time_taken = ((date_now - last_time_start) / 1000);
  48.  
  49. if (worst_time === -1 || time_taken > worst_time) {
  50. worst_time = time_taken;
  51. }
  52. if (best_time === -1 || time_taken < best_time) {
  53. best_time = time_taken;
  54. }
  55.  
  56. console.debug(
  57. "Step: cursor #" + query_count + "; " +
  58. "took " + time_taken + " sec (worst " + worst_time + " sec;" +
  59. " best " + best_time + " sec)"
  60. );
  61.  
  62. last_time_start = date_now;
  63. }
  64.  
  65. query_count++;
  66.  
  67. query_next(sonicChannelSearch, cursor);
  68. }
  69. );
  70.  
  71. if (commited !== true) {
  72. console.warn("Not commited yet: #" + last_count);
  73. }
  74. } else {
  75. query_next(sonicChannelSearch, cursor);
  76. }
  77. })
  78. .catch((error) => {
  79. console.error("Cursor error", error);
  80.  
  81. process.exit(1);
  82. });
  83. };
  84.  
  85. mongoose.connect("mongodb://localhost/messages", {
  86. useNewUrlParser : true
  87. })
  88. .then(() => {
  89. console.info("Mongoose connected.");
  90.  
  91. var sonicChannelSearch = new SonicChannelSearch({
  92. host : "::1",
  93. port : 1491,
  94. auth : "SecretPassword"
  95. }).connect({
  96. connected : function() {
  97. console.info("Sonic Channel succeeded to connect to host.");
  98.  
  99. var cursor = MessageModel.find(
  100. {
  101. type : "text"
  102. },
  103.  
  104. {
  105. website_id : true,
  106. content : true
  107. }
  108. )
  109. .cursor();
  110.  
  111. last_time_start = Date.now();
  112.  
  113. query_next(sonicChannelSearch, cursor);
  114. },
  115.  
  116. disconnected : function() {
  117. console.error("Sonic Channel is now disconnected.");
  118.  
  119. process.exit(1);
  120. },
  121.  
  122. timeout : function() {
  123. console.error("Sonic Channel connection timed out.");
  124. },
  125.  
  126. retrying : function() {
  127. console.error("Trying to reconnect to Sonic Channel...");
  128. },
  129.  
  130. error : function(error) {
  131. console.error("Sonic Channel failed to connect to host.", error);
  132. }
  133. });
  134. })
  135. .catch((error) => {
  136. console.error("Mongoose connect failed.", error);
  137. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement