【问题标题】:Grails Searchable Plugin - Filtering Result SetGrails Searchable Plugin - 过滤结果集
【发布时间】:2013-02-22 08:27:51
【问题描述】:

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

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

这是我的场景..

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

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

请您指导我的方法。

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

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

我的方法:

根据名称获取resultSet
根据位置获取resultSet
根据邮箱地址获取resultSet

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

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

【问题讨论】:

  • 我也分析了荧光笔的工作原理。但它只检查文本。

标签: grails grails-2.0 lucene compass-lucene


【解决方案1】:

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

你可以找到herehere

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

class A {
      String x
      String y
      String z

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

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

【讨论】:

    猜你喜欢
    • 2012-11-23
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多