【发布时间】:2012-02-07 20:42:06
【问题描述】:
我需要将全文搜索功能添加到我现有的数据库中。当然,首先转向 Solr 或 Elastic Search 之类的东西。我必须解决的问题是——如何安全地显示从底层搜索引擎返回的结果(我们现在考虑一下 Solr 或 Elastic Search,但是任何其他解决方案或引擎也能达到这一点)。
棘手的上下文是,例如,我的系统中的个人资料记录要被索引。个人资料中的字段之一是 - 经理的反馈。通常在系统中,该字段仅对员工的直接经理和更高层级可见,即来自另一个分支机构的“经理”将无法看到该字段。但是,我希望该字段可以通过全文搜索进行搜索,但仅限于实际可以看到它的人。
现在我向 Solr 查询“stupid”(即查询字符串),它返回 N 个文档。将其返回给最终用户时,我将删除“经理的反馈”字段,因为最终用户不是特定人员的经理——但结果集中的文档已经是“愚蠢”家伙的证据……
问题是——处理该用例的可行方法是什么?是否可以使用本地安全过滤器插入 Solr/ES 以进行输出?
注意事项:
- 由于上述情况,仅过滤掉字段不起作用
-
过滤掉完整的文档将不起作用,因为
- 搜索引擎不知道哪些字段匹配 - 因此无法按字段手动过滤结果集http://elasticsearch-users.115913.n3.nabble.com/Best-way-to-return-which-field-matched-td2713071.html
- 即使这确实有效,从结果集中删除文档也会破坏引擎返回的方面(例如,按部门匹配的数量)——我必须手动重新计算方面,否则它们将与手动过滤的记录不匹配,并且会揭示我实际上不想向最终用户展示的内容
【问题讨论】:
标签: solr elasticsearch