在大型论坛中开发快速搜索功能?

时间:2009-07-20 07:44:30

标签: php database forum

我正在PHP中从头开始构建一个论坛。我已经使用了大部分phpBB:s数据库结构。

但是现在我正在考虑搜索功能?什么是能够在所有帖子中快速搜索的好设计。我想必须有一些比mysql中的%query_string%更好的方法:)

也许将所有句子分解为单词,让单词成为哈希表中的键,值是逗号分隔的单词列表中的所有帖子?如果你删除一个帖子就没那么麻烦,但我认为这种方法更好。

从一开始我想我可以使用简单的解决方案,但我不想在论坛变大时更改代码。

感谢您的任何想法,或者您是否可以指出我正确的方向!

4 个答案:

答案 0 :(得分:4)

Zend Lucene是一种将搜索添加到PHP站点的强大方法。

这是一篇关于如何做到这一点的文章:Roll Your Own Search Engine with Zend_Search_Lucene

答案 1 :(得分:1)

今天我的最佳选择是sphinx search。它可以用于php,rails,perl,直到现在我的工作就像一个魅力。您可以查看php solution。例如Craiglist使用它。

答案 2 :(得分:1)

不要重新发明轮子。看看Lucene吧。 php还有一个端口:

Zend Lucene

Lucene为您进行解析和索引,查询速度很快。

答案 3 :(得分:0)

大多数论坛用户不仅需要字符串搜索。他们可能不知道他们需要的确切短语,当他们搜索“论坛搜索”时,他们会很高兴找到“如何搜索论坛”的结果,其中包含相关的术语但是以不同的顺序并用其他单词分隔

如果他们不知道所需要的拼写,他们可能还需要一些模糊搜索。他们可能会搜索“sequal”并想要“sql”。

所有这些都指向一个比你喜欢的更复杂的解决方案。

现在最重要的指针是,无论你实现什么,你应该确保很容易将它切换出来,以便以后更好地使用。确保您的搜索是可热插拔的,因为您知道以后需要更改它。