与自定义Web应用程序集成的最佳文本搜索引擎?
时间:2020-03-06 14:34:09 来源:igfitidea点击:
我们有一个Web应用程序,允许用户上载文档,创建自己的文档等。上传的文件存储在Amazon S3上,创建的信息存储在MySQL数据库中。我要寻找的是某种搜索引擎,在其中向我们提供所有文本文档(每个文档都有唯一的ID),并建立索引或者其他内容。稍后,我可以为其提供搜索查询,它将(通过其ID)提取最佳匹配的文档以及匹配的文本片段。
基本上,我们希望允许我们的用户搜索他们上传的资料的存储库,以及其他用户标记为公开的内容。该解决方案应该在标准的Linux服务器上运行,并且理想情况下将是开源的,但是如果价格不算过高,我还将考虑使用付费的解决方案。
到目前为止,我已经找到了三个潜在的候选人:
- MySQL全文搜索-我读过的一些报告说它很慢
- Apache Lucene-不幸的是用Java编写,但是如果需要的话,我会用它。据说快
- Sphinx-似乎不那么受欢迎,理想情况下,我发现的任何解决方案都将得到社区的大力支持。
如果我忽略了其他任何不错的选择,或者我们有以上任何经验,请告诉我。
解决方案
我想Google会提供满足我们需求的解决方案。从这里开始:Google Enterprise
Lucene有一个名为" Ferret"的Ruby端口。除了Ruby API,我们还可以使用称为" cFerret"的基础c实现。
Lucene很好。尽管它最初是用Java编写的,但是它有一个php实现http://framework.zend.com/manual/en/zend.search.lucene.html
还有Xapian,它速度很快,而且可以完全自定义。
它支持自定义索引器,使索引器可以索引未存储在数据库中的数据,这可能对存储在S3上的文档很有用。
看看Solr。它基于Lucene,因此速度非常快,并且在任何平台上都非常易于使用。
Sphinx可能值得我们考虑,因为它可以与几种常见的RDMS(特别是MySQL)配合使用