为每个最终用户隔离solr索引

时间:2013-03-26 23:30:53

标签: solr lucene full-text-search search-engine solr4

对于我们的应用程序,我们希望以某种方式使用应用程序(使用solr索引上载的数据)为每个用户隔离索引数据。那可能吗?

schema.xml和索引的所有文档的文档结构是相同的。出于安全原因,我们只想要隔离。

澄清:我忘了提到solr只能通过网络应用访问。最终用户永远不会直接连接到Solr。

2 个答案:

答案 0 :(得分:2)

如果每个文档只能由少数用户访问,则可以保留允许访问该文档的多值用户ID allowed_user_ids字段。然后通过user_id对其进行过滤查询以限制访问。

如果您同时拥有公共文档和受限文档,则可以保留字段is_public,而不是将所有user_id存储在公共文档中,并仅将其设置为true。对于受限文档,请使用allowed_user_ids上的过滤查询。

答案 1 :(得分:0)

您可以尝试使用Lucene的搜索空间过滤功能。它根据提供的标准限制可用于搜索的文档集。

标准可以用两种方式构建。

1)就像任何其他Lucene查询一样:Lucene Filtered Query

2)将文档集作为Filter

的实例传递给IndexSearcher