索引上传的文档 - 只能由上传文档的用户搜索

时间:2011-01-18 19:20:41

标签: java php javascript indexing solr

如果有人能指出我最合适的方向。

我编写了一个自定义CMS,我希望能够允许每个用户上传文档(.doc .docx .pdf .rtf .txt等),然后能够在这些文件的内容中搜索关键字。

CMS在Linux环境中完全用PHP和MySQL编写。

上传后,文档将“按原样”存储在服务器上的用户私人文件夹中。每个用户将存储数百个(如果不是数千个)文档。

特定用户文件只能由该用户搜索,这一点非常重要。

有人能指出我正确的方向吗?我看过Solr,但这些类型的解决方案看起来很复杂。我花了整整一周的时间来研究不同的解决方案,这是我寻找解决方案的最后一次尝试。

提前谢谢。

3 个答案:

答案 0 :(得分:2)

我看到了2个选择。

  1. 每个用户的搜索索引。他们的文件与其他人的文件分开索引。当他们进行搜索时,他们会搜索自己的搜索索引。没有看到其他人的结果,或根据其他文件的内容得分的危险。缺点是必须单独存储和更新索引。我会考虑使用Lucene这样的东西,因为索引会很小。

  2. 单个搜索索引。用户都共享搜索索引。必须对搜索结果进行过滤,以便仅返回该用户的结果。好处是实现一个搜索索引(Solr对此非常有用)。缺点是用户搜索之间存在串扰的风险。评分会受到其他用户文档的影响,导致搜索结果较差。

  3. 我讨厌这样说,但从质量的角度来看,我倾向于数字1.数字2似乎更有效,更容易,但用户结果对我来说更重要。

答案 1 :(得分:0)

将文件保留在公共目录树之外,在数据库表中保留对文件的文件路径和创建者的用户ID的引用,然后他们可以使用数据库查询搜索文件。您当然必须让用户创建帐户并登录。您可以让他们使用php下载文件。

答案 2 :(得分:0)

只要用户的文件都位于一个独立的目录中,或者有某种方式指定一个用户的文档,比如将用户ID添加到文件名中,就可以使用grep。

缺点:

  • 每次搜索都必须经过所有文件,所以如果你有很多文件或非常大的文件,那就很慢了。
  • 二进制文档格式(如Word或PDF)可能无法生成准确的结果。
  • 这不是企业解决方案。

修改后的答案:尝试mnoGoSearch