我们有一个网络应用程序,允许用户上传文档,创建自己的文档,等等。上传的文件存储在Amazon S3上,创建的信息存储在MySQL数据库中。我正在寻找的是某种搜索引擎,我在其中提供所有文本文档,每个文档都有一个唯一的ID,并构建索引或其他任何内容。之后,我可以给它搜索查询,它会提取最匹配的文档(通过他们的ID),以及匹配文本的片段。

基本上我们希望允许我们的用户搜索他们上传的内容库以及其他用户标记为公开的内容。该解决方案应该在标准的Linux服务器上运行,理想情况下它应该是开源的,但如果价格不高,我也会考虑付费解决方案。

到目前为止,我找到了三个潜在的候选人:

  1. MySQL全文搜索 - 一些报告我读过这是非常慢的
  2. Apache Lucene - 遗憾的是用Java编写,但我会用如果我必须的话。据说很快
  3. Sphinx - 似乎并不那么受欢迎,理想情况下,无论我发现哪种解决方案都会有很多社区支持。
  4. 如果我忽略了其他任何好的选择,或者您对上述任何一个方面有经验,请告诉我。

有帮助吗?

解决方案

查看 Solr 。它基于Lucene,所以速度非常快,而且从任何平台上都可以轻松使用。

其他提示

Sphinx 可能值得您考虑,因为它适用于几种常见的RDMS(尤其是MySQL)

还有 Xapian ,它速度快且可定制。

它支持自定义索引器,允许索引未存储在数据库中的数据,这些数据可能对存储在S3上的文档有用。

我认为 Google 将提供满足您需求的解决方案。从这里开始: Google Enterprise

Lucene的Ruby端口名为“ Ferret ”。除了Ruby API之外,您还可以获得名为“cFerret”的底层c实现。

Lucene非常好。虽然它最初是用java编写的,但有一个php实现 http:/ /framework.zend.com/manual/en/zend.search.lucene.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top