用户内容网站范围搜索 - PHP / MySQL

时间:2010-10-03 09:45:56

标签: php sql database search

对于我正在创建的用户内容网站,它有很多子部分:电影,工作,人物,照片,邮件等。它就像一个雅虎门户,但非常非常详细的信息搜索,就像我一样每个主题尽可能深入,不同于任何网站。我有在codeignitor php和mysql中开发的网站。正如我们在google,yahoo上看到的那样,搜索可以是所有子站点和每个子区域的全局搜索。我的系统上有22个可能的用户内容对象,每个对象有大约12-15个搜索字段,我称之为对象元数据+ I存储历史数据(如用户内容版本控制),我想在搜索中包含这些内容。

现在的问题是每个子部分搜索它似乎是合理的,因为范围是有限的所以我认为我可以用mysql很好地完成它。我没有预见到任何性能问题。但对于网站搜索,它不仅会搜索标题名称,还会搜索关键字,标签,说明,包括人们的邮件,评论,历史数据等。所以我担心的是性能。由于这是一个启动,我的硬件资源有限,所以我必须100%依赖数据库和代码来完成它。

那么从代码和数据库的角度来看,实现这种搜索的最佳实践是什么?是否应该根据子站点使用混合数据库?目前一切都存储在1个mysql数据库中。但是我发现它可以在人们搜索,电影搜索等方面正常工作,但如果我包括邮件搜索,地理位置,历史数据搜索甚至不得不去搜索照片标签,照片描述等项目的问题 - >由于大量的连接和行数,全局搜索的所有部分都可能存在性能问题。

3 个答案:

答案 0 :(得分:1)

我不了解PHP,但对于我的ruby-on-rails项目,我总是使用Sphinx搜索引擎来做这些事情。它是一个独立的搜索引擎,可以为您的数据库编制索引,当用户提交搜索查询时,查询将与Sphinx的索引数据库而不是实际的数据库进行匹配。它速度极快,可以很好地控制索引/搜索方式 Sphinx Search Engine
PHP: Sphinx Extension(不确定这是否相关)

答案 1 :(得分:0)

对于预算范围内的广义网站搜索,您可以将其中一个主要搜索API限制在您的域中,并处理和显示结果,就像它们来自您自己的搜索一样。

答案 2 :(得分:0)

我没有确切的解决方案,但我的开发中网站遇到了类似的问题。

我开始认为解决方案可能在于确定大部分搜索的位置,并限制对这些查询的搜索。如果用户搜索需要更深入的结果(例如您的mail search, geo locations, historical data),那么您可以将用户发送到第二个mysql查询。让您的大多数用户使用更简单,低性能的查询进行搜索,其余的可以在必要时使用更多资源。

举个例子,我网站的大部分用户都会搜索新闻,日历和媒体部分,因此我的搜索会首先查看。但访问者也可以搜索其他用户,群组,论坛帖子,标签/类别等。但是我要让第二个更复杂的脚本处理它。