【发布时间】:2009-08-24 14:12:08
【问题描述】:
这是我现在作为一个非常基本的搜索:
var Results = from p in dx.Listings select p;
if (CategoryId > 0) Results = Results.Where(p => p.CategoryId == CategoryId);
if (SuburbId > 0) Results = Results.Where(p => p.SuburbId == SuburbId);
var OrderedResults = Results.OrderByDescending(p => p.ListingType);
OrderedResults = OrderedResults.ThenByDescending(p => p.Created);
我知道我可以添加 .Contains() 或类似内容,并从关键字框中输入关键字(拆分为单个项目),这样应该会得到结果列表。
但是我需要按基本相关性对结果进行排序。这意味着如果记录 A 包含 2 个关键字(在 'Body' nvarchar(MAX) 字段中),它应该高于仅匹配 1 个关键字的记录 B。我不需要每次点击的完整计数......但是,如果这样更容易管理那就没问题了。
那么有什么方法可以很好地直接将点击计数作为 orderby 的一部分?我可以通过获取结果和解析来管理它,但是我真的不想这样做,因为解析可能成千上万可能会占用 IIS 机器,而 SQL Server 是一个功能强大的集群:)
如果有人有任何想法或提示,那将是一个很大的帮助。
【问题讨论】:
标签: c# .net linq linq-to-sql