我有一个建立在ASP.net MVC3上的电子商务网站。它有appx。 200k产品。我们目前正在产品表中搜索,以便在网站上提供搜索。
问题在于它是致命的慢,当然,通过分析探查器的性能,我们发现它是sql搜索,这是主要问题。
可以使用哪些其他替代方案来加速搜索?我们是否需要为搜索构建单独的缓存或者还需要做任何其他事情?
如果你看看其他大型电子商务网站,如ebay,amazon或flipkart,它们非常快。他们是怎么做到的?
答案 0 :(得分:6)
他们通常使用例如Lucene.NET或Solr构建可搜索内容的全文索引(使用Java,但可以使用SolrNet通过.NET调用它的实例)。
索引是从您的SQL数据库构建的,您所做的任何搜索都需要通过向SQL数据库发送查询来使用该索引,但当然使用不同的语法。需要定期更新/重新创建索引以保持SQL数据库的最新状态。
这样的文本索引是为查询大量字符串数据而构建的,可以在您网站的产品搜索功能中轻松处理数十万种产品。除了速度之外,如果没有文本索引,还有很多其他好处,例如拼写更正和模糊搜索。