Grails Searchable Plugin - 过滤结果集

时间:2013-03-07 08:11:57

标签: grails grails-2.0 lucene compass-lucene

我目前正在使用Lucene。我的要求就像facebook搜索框。用户搜索人和朋友。但在我的要求中,用户有隐私设置,如姓名,位置,电子邮件地址,每个人或只有朋友可见。他可以向朋友和社区的其他成员展示和隐藏这些字段。

我已根据姓名,位置和电子邮件地址实施了简单搜索。但现在我在隐私设置的基础上修改搜索。

这是我的方案 ..

用户A 具有隐私设置:
姓名仅向朋友显示 电子邮件显示给每一个人 位置不会显示给任何人。

如果用户X 在搜索框中输入用户A 的位置,则不应该在搜索结果中。但是,如果用户X在搜索框中键入用户A 的名称,则应显示该名称,因为用户A 没有限制名称,并且在隐私设置中他的朋友可以看到它。

你能指导我一下这个方法。

如果我没有清楚地写出我的要求,请告诉我。

我已经分析了以下方法,
1- IndexSearcher的解释方法(将达到整体表现)
2-探索过滤器 但是得不到多少

我的方法:

在名称
的基础上获取resultSet 根据位置获取resultSet 在电子邮件地址的基础上获取resultSet

循环每个3结果集并应用与隐私设置相关的条件,并根据隐私设置排除项目。并最终合并所有3个结果集。

如果还有其他办法吗?请与我分享。感谢。

1 个答案:

答案 0 :(得分:1)

可以在可搜索的插件中使用lucene查询语法,根据需要创建lucene Query。

您可以找到herehere

您可以通过覆盖默认属性设置来限制搜索。你只需要像这样申请....

class A {
      String x
      String y
      String z

    static searchable = [only: ['x', 'y']] 
    // …
}

使用此功能可以限制可搜索的属性。