From 1006f4c5b9de17c326e1f5efb80579f831f518e0 Mon Sep 17 00:00:00 2001 From: Las Zenow Date: Wed, 15 Aug 2012 15:39:52 +0200 Subject: [PATCH] Allow search on all the fields --- search.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/search.go b/search.go index 6b52d7d..80831ad 100644 --- a/search.go +++ b/search.go @@ -13,13 +13,21 @@ const ( ) func buildQuery(q string) bson.M { + var reg []bson.RegEx + query := bson.M{} words := strings.Split(q, " ") - reg := make([]bson.RegEx, len(words)) - for i, w := range words { - reg[i].Pattern = w - reg[i].Options = "i" + for _, w := range words { + tag := strings.SplitN(w, ":", 2) + if len(tag) > 1 { + query[tag[0]] = bson.RegEx{tag[1], "i"} + } else { + reg = append(reg, bson.RegEx{w, "i"}) + } } - return bson.M{"keywords": bson.M{"$all": reg}} + if len(reg) > 0 { + query["keywords"] = bson.M{"$all": reg} + } + return query } type searchData struct {