Skip to content

Commit

Permalink
issue #13 - support for deleted and provisional doc filtering
Browse files Browse the repository at this point in the history
  • Loading branch information
vabarbosa committed Aug 16, 2016
1 parent 1049cc5 commit a7ee889
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 1 deletion.
2 changes: 1 addition & 1 deletion app.js
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ var performSearch = function(options, callback) {
opts.limit = 20;
opts.sort = '-date';

db.search('search', 'search', opts, function(err, data) {
db.search('search', 'searchdocs', opts, function(err, data) {
var d = data;
if (err || !data.rows || data.rows.length == 0) {
d = { rows: [] };
Expand Down
34 changes: 34 additions & 0 deletions lib/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,37 @@ var generateSearchIndex = function(schema, callback) {
func += ' indy("default", str, false);\n';
func += ' indy("date", parseInt(doc.updated_at.substring(0,19).replace(/[^0-9]/g, "")), false); '
func += '}\n';


var func2 = 'function(doc){\n';
func2 += ' if (doc._id =="schema" || doc._id.match(/^_design/)) return;\n';
func2 += ' if (typeof doc.status !== "string") return;\n';
func2 += ' var indy = function(key, value, facet) {\n';
func2 += ' var t = typeof value;\n';
func2 += ' if (t == "string" || t == "number" || t == "boolean") {\n';
func2 += ' index(key, value, {facet: facet,store:false});\n';
func2 += ' } else if (t == "object" && value != null) {\n';
func2 += ' for(var i in value) {\n';
func2 += ' index(key, value[i], {facet: facet});\n';
func2 += ' }\n';
func2 += ' }\n';
func2 += ' };\n\n';

// index the fixed fields
func2 += ' indy("name", doc.name, false);\n';
func2 += ' indy("full_name", doc.full_name, false);\n';
func2 += ' indy("status", doc.status, false);\n';

// index the other fields in the schema
for (var i in schema) {
var f = schema[i];
var faceted = (typeof f.faceted=="boolean" && f.faceted)?"true":"false"
if (i != "_id" && i != "_rev") {
func2 += ' indy("' + i + '", doc["'+ i + '"], ' + faceted + ');\n';
}
}

func2 += '}\n';

// generate design doc
var ddoc = { _id: "_design/search",
Expand All @@ -119,6 +150,9 @@ var generateSearchIndex = function(schema, callback) {
indexes: {
search: {
index: func
},
searchdocs: {
index: func2
}
}};

Expand Down

0 comments on commit a7ee889

Please sign in to comment.