我的数据库包含数千万种产品,因此我需要一种有效的搜索技术来加快我的响应速度。最初,我尝试根据字母或查询的一些初始字符制作大量表格。但是,这种情况多次失败,例如如果用户搜索“ipod touch”而不是“apple ipod touch”。我可以使用trie或其他数据结构来实现吗? Google如何跟踪如此多的数据?
答案 0 :(得分:5)
制作自己的搜索算法很困难。当我不得不为一个项目做类似的事情时,我只是逐列搜索整个数据库,搜索所有数据,然后搜索任何条款;它很粗糙,但它起作用,因为数据库永远不会真实地容纳超过一万个条目。考虑到数据库的大小,你可以更好地研究一些预先制作的搜索引擎:那些东西写得很好并且经过优化。正如Joyce Babu所说,Apache Solr就是其中之一;我想提出的另一个建议是Sphinx。它(根据维基百科)在craigslist上使用,它每天提供2亿次搜索;那种力量应该足以处理你想要的东西。
答案 1 :(得分:2)
您需要的是全文搜索。您可以尝试在MySQL中使用FULLTEXT
索引并执行MATCH AGAINST
查询。
但我认为Apache Solr会有更好的运气。它速度快,可扩展,并提供更好(相关)的结果。