0

我正在使用 Solr 来索引 pdf 和 word 文件的目录。我希望 Solr 搜索这些文件,但只返回基于登录用户权限的结果。是否可以索引文件目录以及查询包含文件权限的数据库并将数据作为 xml 实体添加到索引并对这些结果执行过滤查询?

我使用 WordPress 作为 CMS 系统,并带有一个名为 Filebase 的文件管理插件。Filebase 与目录同步以将文档上传到站点。我已将 Solr 配置为索引包含文档的文件库目录。Filebase 具有我在每个文件上设置的权限。

我的想法是,如果我可以将文件的最小用户级别位置整数存储在索引中,那么我可以执行过滤查询以仅显示用户级别为“x”的结果。

我希望这是有道理的。

4

1 回答 1

0

是的,如果您使用的是 Solr 4+,您可以将部分更新推送到 Solr 索引。

架构

对于部分更新,您的 schema.xml 中的所有字段都需要存储

这就是你的字段部分在 schema.xml 中的样子:

<fields>
  <field name="id" type="string" indexed="true" stored="true" required="true" />
  <field name="title" type="text_general" indexed="true" stored="true"/>
  <field name="description" type="text_general" indexed="true" stored="true" />
  <field name="body" type="text_general" indexed="true" stored="true"/>
  <field name="permission" type="integer" indexed="true" stored="true" />
</fields>

索引:

您可以首先将所有文档(pdf 和 word 的目录)索引到您的索引中。

然后,您可以将部分更新发送到特定 ID 的权限字段。

当您发送部分更新时,后台实际发生的是:

  • Solr 将获取该文档的所有其他字段的值,例如标题、描述、正文
  • 删除旧文档
  • 将新更新的文档推送到 Solr 索引,包含所有现有字段以及新的权限字段

假设您要为 id=document_1 的文档设置权限=5,您的查询应如下所示:

localhost:8080/solr/update?commit=true' -H 'Content-type:application/json' -d '[{"id":"document_1","permission":{"set":5}}]

这是关于部分更新的好文档:http: //solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/

于 2013-07-23T18:06:11.690 回答