如果有人能指出我最合适的方向。
我编写了一个自定义CMS,我希望能够允许每个用户上传文档(.doc .docx .pdf .rtf .txt等),然后能够在这些文件的内容中搜索关键字。
CMS在Linux环境中完全用PHP和MySQL编写。
上传后,文档将“按原样”存储在服务器上的用户私人文件夹中。每个用户将存储数百个(如果不是数千个)文档。
特定用户文件只能由该用户搜索,这一点非常重要。
有人能指出我正确的方向吗?我看过Solr,但这些类型的解决方案看起来很复杂。我花了整整一周的时间来研究不同的解决方案,这是我寻找解决方案的最后一次尝试。
提前谢谢。
答案 0 :(得分:2)
每个用户的搜索索引。他们的文件与其他人的文件分开索引。当他们进行搜索时,他们会搜索自己的搜索索引。没有看到其他人的结果,或根据其他文件的内容得分的危险。缺点是必须单独存储和更新索引。我会考虑使用Lucene这样的东西,因为索引会很小。
单个搜索索引。用户都共享搜索索引。必须对搜索结果进行过滤,以便仅返回该用户的结果。好处是实现一个搜索索引(Solr对此非常有用)。缺点是用户搜索之间存在串扰的风险。评分会受到其他用户文档的影响,导致搜索结果较差。
我讨厌这样说,但从质量的角度来看,我倾向于数字1.数字2似乎更有效,更容易,但用户结果对我来说更重要。
答案 1 :(得分:0)
将文件保留在公共目录树之外,在数据库表中保留对文件的文件路径和创建者的用户ID的引用,然后他们可以使用数据库查询搜索文件。您当然必须让用户创建帐户并登录。您可以让他们使用php下载文件。
答案 2 :(得分:0)
只要用户的文件都位于一个独立的目录中,或者有某种方式指定一个用户的文档,比如将用户ID添加到文件名中,就可以使用grep。
缺点:
修改后的答案:尝试mnoGoSearch