现在我们想用PHP构建类似Google的搜索引擎以查找给定查询的页面。它必须快速,任何搜索都不应超过一秒钟。
我们应该如何做呢?
你还可以尝试使用SphinxSearch。Craigslist使用sphinx,并且它可以连接到mysql和postgresql。
这里有一些有趣的搜索引擎供您参考。我不知道您所说的“类似谷歌”的意思,所以我会忽略这部分。
根据您的情况,您想要自己开发搜索引擎;一般搜索引擎的好的起点包括:
如果您想使用现成的解决方案:
为什么不尝试使用类似Google Search Appliance或Google Enterprise的东西呢?它们会有相关成本,但可以避免重复发明轮子,并提供“类似谷歌”的搜索。
SQLite具有相当不错的全文搜索能力(查看SQLite FTS 3/4 - 它出人意料地好)
如果您想要一个简单的PHP DIY方法,使用许多由被索引术语的哈希拆分的小文件进行索引可以非常有效,并且如果您注意设计,搜索速度甚至在PHP中也可以非常快。 (这个想法是使仅在包含与哈希和记录ID匹配的术语的非常小的文件上进行搜索 - 如果您想节省硬盘空间,可以使用位数组切片来表示记录ID) ..但对于完整文本的每个单词进行索引可能会很慢..那部分应该真正用C来完成
对于“模糊”搜索,可以考虑使用metaphone哈希。
对于预构建的全文搜索工具,请查看以下内容: SQLite FTS 3/4(SQLite具有非常好的全文搜索能力!), Sphinx, kinoSearch (kinoSearch有点像Lucene,但后端是C,有一个漂亮易用的Perl包装器 - 还有cLucene,但我认为那仍然是预阿尔法版)
Java Lucene(或任何基于Java的东西)可能需要大量RAM来运行JVM - 因此如果您预算有限,则可能不太适合