如何使用每个类别的结果数量构建搜索?

时间:2009-09-07 22:55:47

标签: c# asp.net optimization caching facet

我需要显示给定类别的结果数量,并隐藏任何没有结果的类别。

示例:This Yahoo!Jobs page显示城市,工作类别,体验等类别中的结果数量。

我在C#/ Asp.Net工作,担心我们的服务器会在没有一些严重的缓存和SQL优化的情况下窒息。

您将如何继续创建这样的解决方案?

3 个答案:

答案 0 :(得分:1)

Relational databases are not suited for that kind of stuff。这只是错误的工具。相反,请查看LuceneSolrSphinx等。

我个人推荐Solr,这很容易上手,使用SolrNet,您可以在few lines of code中编写一个多面的ASP.NET应用。

免责声明:我是该图书馆的作者。

答案 1 :(得分:0)

我认为你必须深入了解有关你的设置的更多细节。你在使用ORM吗?数据已经在内存中吗?请求是如何进入的?你特别关注什么?你做过任何剖析以确定这确实是一个问题吗? 我不能强调最后一个。在你试图找到方法之前,确保你所害怕的是一个实际问题。

然而,尝试回答,如果你做这样的事情

_categoryRepository
  .Where(category=>category.Matches(query))
  .Select(category.Items.Count())

只有category.Matches(query)返回true的类别才会执行Count()。

答案 2 :(得分:0)

这些计数的典型方式是通过缓存。该模型将在插入相关表格时触发,然后使用“CurrentCount”更新计算字段。

您可以将更多级别的缓存添加到应用程序本身,这样计数只会每隔几个小时增加一次或类似。

这比每次实际计算所有行要好得多,但它确实意味着您需要预先知道要计算的数据类型,因此您可以预先计算它。