3

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

4

2 回答 2

5

制作自己的搜索算法很困难。当我不得不为一个项目做类似的事情时,我只是逐列搜索整个数据库,搜索所有,然后搜索任何术语;它很粗糙,但它很有效,因为数据库实际上永远不会容纳超过一万个条目。鉴于您的数据库的大小,您最好查看一些预制的搜索引擎:这些东西写得非常好并且优化了。正如 Joyce Babu 所建议的,Apache Solr 就是其中之一。我想提出的另一个建议是Sphinx。它(根据维基百科)在 craigslist 上使用,每天提供 2 亿次搜索;这种力量应该足以处理你想要的东西。

于 2012-07-28T06:06:53.887 回答
2

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

但我认为使用 Apache Solr 会更好。它快速、可扩展并提供更好(相关)的结果。

于 2012-07-28T05:52:12.783 回答