【问题标题】:Develop a fast search functionality in a big forum?在大型论坛中开发快速搜索功能?
【发布时间】:2009-07-20 07:44:29
【问题描述】:

我正在用 PHP 从头开始​​构建一个论坛。 phpBB:s数据库结构我用的最多。

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

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

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

感谢您的任何想法,或者您能否指出正确的方向!

【问题讨论】:

  • 您最好的选择(Google 除外)可能是专用的搜索软件,例如 Lucene。

标签: php database forum


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    今天对我来说最好的选择是sphinx search。它可以与 php、rails、perl 一起使用,直到现在对我来说就像一个魅力。您可以查看php solution。例如使用 Craiglist。

    【讨论】:

    • 谢谢你的提示,我会试试这个,因为 Lucene 不支持 utf8 我能看到的。
    • Zend Lucene 宁愿使用 utf8 作为默认值:framework.zend.com/manual/en/…
    【解决方案3】:

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

    Zend Lucene

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

    【讨论】:

      【解决方案4】:

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

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

      所有这些都指向一个比您的点赞搜索更复杂的解决方案。

      目前最重要的一点是,无论您实现什么,都应该确保很容易将其切换出来以支持以后更好的东西。确保您的搜索是可热插拔的,因为您知道以后会想要更改它。

      【讨论】:

        猜你喜欢
        • 2015-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-11
        • 1970-01-01
        • 2011-04-15
        • 1970-01-01
        • 2018-04-14
        相关资源
        最近更新 更多