Grails 可搜索插件 - 过滤结果集

标签 grails grails-2.0 lucene compass-lucene

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

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

这是我的场景 ..

用户A 有隐私设置:
姓名只显示给 friend
电子邮件显示给每个人
位置不显示给任何人。

用户 X 的类型位置用户A 在搜索框中,那么它不应该出现在结果中。但是如果用户 X 在搜索框中输入用户 A 的名称,那么它应该会显示出来,因为用户 A 没有限制名称,并且在隐私设置中他的 friend 可以看到它。

你能指导我的方法。

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

我分析了以下方法,
1- IndexSearcher 的解释方法(会影响整体性能)
2- 探索过滤器
但不能得到太多

我的方法:

根据名称获取resultSet
根据位置获取resultSet
根据email地址获取resultSet

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

如果有其他方法吗?请与我分享。谢谢。

最佳答案

可能您可以在可搜索插件中使用 lucene 查询语法来根据需要创建 lucene 查询。

您可以找到 herehere

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

class A {
      String x
      String y
      String z

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

使用它您可以限制可搜索的属性。

关于Grails 可搜索插件 - 过滤结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15266130/

相关文章:

unit-testing - Grails 单元测试验证调用的模拟方法

eclipse - 如何让GGTS/STS超快?

grails - 将用户从php URL重定向到grails页面

elasticsearch - 维基词典/MediaWiki 搜索和后缀过滤

spring - Grails:SpringSecurity角色层次结构未按预期工作

grails - 是否可以将 Groovy Expandos 的集合绑定(bind)到碧 Jade 报告?

grails - 在 Grails 中创建一个新的资源包?

grails - 跟踪Groovy方法定义?

java - Lucene - 相当于 SQL "IN"关键字

lucene - 如何与SOLR/lucene中的搜索字符串子集匹配