cloudant全文搜索文档的子组

时间:2013-09-03 06:37:37

标签: cloudant

我正在使用Cloudant构建一个消息传递系统,其中包含“消息”和“成员资格”文档:

消息文件:

{"_id":"1","type"="message","group":"a","text":"this is message 1"},
{"_id":"2","type"="message","group":"a","text":"this is message 2"},
{"_id":"3","type"="message","group":"b","text":"this is message 3"},
...

会员资料:

{"_id":"a","type"="membership","user":"joe","group":"a"},
{"_id":"b","type"="membership","user":"bob","group":"a"},
{"_id":"c","type"="membership","user":"bob","group":"b"},
...

每条消息都与一个组相关联。用户可能拥有数百个不同组的成员资格。

我想代表特定用户对消息文本执行全文搜索。该应用程序要求用户不得查看来自不是其成员的组的消息。

如何进行全文搜索,仅返回特定用户所属组的邮件?

1 个答案:

答案 0 :(得分:2)

您可以尝试通过制作智能搜索字符串来完成此操作。要进行此设置,在编写搜索索引功能时,请对消息的组以及消息文本编制索引。例如:

function(doc){
  index("group", doc.group);
  index("text", doc.text);
}

然后,在查询此索引时,使用lucene syntax构建一个包含所有用户成员资格的搜索字符串。

(group:a or group:b or group:c or ...) and text:"search string goes here"