full text search using reds, issue #142

This commit is contained in:
Baris Soner Usakli
2013-08-03 20:54:16 -04:00
parent 797d05a84a
commit d6b9a2799b
10 changed files with 179 additions and 42 deletions

View File

@@ -8,7 +8,9 @@ var RDB = require('./redis.js'),
postTools = require('./postTools'),
feed = require('./feed.js'),
async = require('async'),
plugins = require('./plugins');
plugins = require('./plugins'),
reds = require('reds'),
search = reds.createSearch('nodebbsearch');
(function(Posts) {
@@ -323,46 +325,19 @@ var RDB = require('./redis.js'),
user.onNewPostMade(uid, tid, pid, timestamp);
var imgur = require('./imgur');
imgur.setClientID(global.nconf.get('imgurClientID'));
uploadPostImages(postData, images, function(err, uploadedImages) {
if(err) {
console.log('Uploading images failed!');
} else {
postData.uploadedImages = JSON.stringify(uploadedImages);
Posts.setPostField(pid, 'uploadedImages', postData.uploadedImages);
}
callback(postData);
});
var uploadedImages = [];
function uploadImage(image, callback) {
imgur.upload(image.data, 'base64', function(err, data) {
if(err) {
callback(err);
} else {
if(data.success) {
var img= {url:data.data.link, name:image.name};
uploadedImages.push(img);
callback(null);
} else {
callback(data);
}
}
});
}
plugins.fireHook('action:save_post_content', [pid, content]);
if(!images) {
postData.uploadedImages = JSON.stringify(uploadedImages);
Posts.setPostField(pid, 'uploadedImages', postData.uploadedImages);
callback(postData);
} else {
async.each(images, uploadImage, function(err) {
if(!err) {
postData.uploadedImages = JSON.stringify(uploadedImages);
Posts.setPostField(pid, 'uploadedImages', postData.uploadedImages);
callback(postData);
} else {
console.log(err);
callback(null);
}
});
}
search.index(content, pid);
});
});
} else {
@@ -370,6 +345,42 @@ var RDB = require('./redis.js'),
}
});
}
function uploadPostImages(postData, images, callback) {
var imgur = require('./imgur');
imgur.setClientID(global.nconf.get('imgurClientID'));
var uploadedImages = [];
function uploadImage(image, callback) {
imgur.upload(image.data, 'base64', function(err, data) {
if(err) {
callback(err);
} else {
if(data.success) {
var img= {url:data.data.link, name:image.name};
uploadedImages.push(img);
callback(null);
} else {
callback(data);
}
}
});
}
if(!images) {
callback(null, uploadedImages);
} else {
async.each(images, uploadImage, function(err) {
if(!err) {
callback(null, uploadedImages);
} else {
console.log(err);
callback(err, null);
}
});
}
}
Posts.getPostsByUid = function(uid, start, end, callback) {