5

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

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

这是我的场景..

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

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

你能指导我的方法吗?

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

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

我的方法:

根据名称
获取结果集 根据位置
获取结果集 根据电子邮件地址获取结果集

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

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

4

1 回答 1

1

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

你可以在这里这里找到

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

class A {
      String x
      String y
      String z

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

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

于 2013-03-21T09:42:38.013 回答