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