2012-07-28 42 views
3

我的数据库包含数以千万计的产品,所以我需要一种高效的搜索技术来加快我的响应速度。最初,我尝试根据字母或查询的一些初始字符制作大量表格。然而,这多次失败,例如如果用户搜索“ipod touch”而不是“apple ipod touch”。我可以使用trie或其他数据结构来实现这个吗? Google如何跟踪这么多数据?为我的网站制作高效的搜索引擎

+0

我的网站目前缓慢的状态可以在这里看到http://compare.buyhatke.com – 2012-07-28 05:48:12

+0

好的网站。你如何获得这些内容?您是使用API​​还是从网站上获取内容? – 2012-07-28 05:58:04

+1

当你“问些大问题”时,好的选民就不会-1。良好的选民-1低质量的问题,没有努力或不清楚。 – 2012-07-28 07:12:34

回答

2

您需要的是全文搜索。您可以尝试在MySQL中使用FULLTEXT索引并执行MATCH AGAINST查询。

但我认为你将会有更好的运气与Apache Solr。它速度快,可扩展并提供更好(相关)的结果。

+0

我完全不知道这个Apache Solr。你可以告诉我一两行,它可以集成在MySQL数据库和PHP之间。另外,如果您对网站有一些建议,请提一下 – 2012-07-28 07:30:28

+0

Solr是一个单独的搜索索引。你将不得不单独更新它。 MySQL有一个dataimport处理程序,它允许你直接从你的数据库导入数据。 – 2012-07-28 10:21:47

5

制作自己的搜索算法很困难。当我不得不为某个项目做类似的事情时,我只是逐列地浏览整个数据库,搜索所有内容,然后搜索任何条款;它是粗糙的,但它的工作原理是因为数据库永远不会实际拥有超过一万个条目。考虑到数据库的大小,您最好查看一些预制的搜索引擎:这些内容的编写和优化都非常好。正如乔伊斯巴布所说,Apache Solr是一个;我想提出的另一个建议是Sphinx。这是(根据维基百科)在craigslist上使用,它每天服务2亿次;这种权力应该足以应付你想要的东西。

+0

感谢您的建议。如果有任何疑问,我会通过他们发布 – 2012-07-28 07:31:49